Я пытаюсь отобразить информацию, отправленную из формы, чтобы создать доску объявлений. Я использую PHP в рамках Laravel. Я использую форму, запись и хранилище. Всякий раз, когда я пытаюсь отобразить содержимое, я получаю следующую ошибку Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException.
Вот контроллер:
/**
* Display a listing of the resource.
* GET /messages
*
* @return Response
*/
public function create()
{
return View::make('comments.create');
}public function show($comment)
{
$message_id = $this->messageRepository->find($comment);
return View::make('comments.show')->with('comment', $message_id);
}
/**
* Store a newly created resource in storage.
* POST /messaages
*
* @return Response
*/
public function store()
{
$data = Input::all() ;
$this->messageForm->validate($data);
$messageRecord = new MessageRecord;
$messageRecord->comment = $data['comment'];
Return "Comment created";
}
}
Вот вид, вызывающий проблему:
<p>$comment</p>
Я не использовал маршрут, но я бросил это вместе:
Route::resource('/message', 'MessageController');
Кажется, вы используете неправильный глагол для маршрута, отображающего этот маршрут. За display
вы, вероятно, должны использовать Route::get
и вы, вероятно, используете Route::post
, Если это не проблема, отредактируйте свой вопрос и поместите туда routes.php
как вас спросили в комментарии.
[Редактировать:]
Если твой store()
уже используется другой формой, и у вас еще есть другая форма для отправки данных POST, вам следует объявить другие маршруты для этого. подобно
Route::post('message/display', ['as' => 'message.display', 'uses' => 'MessageController@display');
Извините за мой предыдущий ответ, show()
предназначен для запроса GET, и, поскольку вы используете форму, вам, вероятно, она не понадобится, если вы не решите отправить данные через URL. Мне очень жаль
[Редактировать заканчивается]
Вы получаете эту ошибку, потому что вы не можете использовать display()
в находчивой маршрутизации. Вместо этого вы должны использовать store()
, Поскольку вы используете ресурсоемкую маршрутизацию laravel, вы должны следовать соглашению laravel. В командной строке запустите
php artisan routes
Вы получите что-то вроде этого,
GET|HEAD message | message.index | MessageController@index
GET|HEAD message/create | message.create | MessageController@create
POST message | message.store | MessageController@store
GET|HEAD message/{message} | message.show | MessageController@show
GET|HEAD message/{message}/edit | message.edit | MessageController@edit
PUT message/{message} | message.update | MessageController@update
PATCH message/{message} | | MessageController@update
DELETE message/{message} | message.destroy | MessageController@destroy
Это методы, их имена маршрутов и соответствующие им HTTP-запросы, которые вы должны использовать.
Проверьте документацию Laravel для находчивого контроллера
Для быстрого просмотра,
index : Display a listing of the resource,
create : Show the form for creating a new resource,
store : Store a newly created resource in storage,
show : Display the specified resource,
edit : Show the form for editing the specified resource,
update : Update the specified resource in storage,
destroy : Remove the specified resource from storage