Я новичок в laravel. Я пытаюсь сделать ссылку на другую страницу. У меня есть индекс страницы и вы хотите перейти к описанию информации о транспортном средстве, выбранном на индексной странице. Проблема в том, что она показывает ошибку:
Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException
index.blade.php @foreach ($cars as $car) <tr> <td> {{link_to_action('CarController@show', $car->Description, $car->id)}}</td> {{ Form::open(array('action' => 'CarController@show', $car->id)) }} {{ Form::close() }} <td>{{ $car->License }}</td> <td>{{ $car->Milage }}</td> <td>{{ $car->Make }}</td> <td>{{ $car->status }}</td> </tr> @endforeach
routes.php
Route::resource('/', 'CarController'); Route::resource('create', 'DataController'); Route::post('desc', array('uses' => 'CarController@show')); Route::post('create', array('uses' => 'CarController@create', 'uses' => 'DataController@index')); Route::post('update', array('uses' => 'CarController@update')); Route::post('store', array('store' => 'CarController@store'));
«NotFoundHttpException» означает, что Laravel не смог найти маршрут для запроса.
Маршрут desc
– это только POST-маршрут, а link_to_action
создаст запрос GET, поэтому вам может понадобиться изменить также маршрут GET:
Route::post('desc', array('uses' => 'CarController@show')); Route::get('desc', array('uses' => 'CarController@show'));
Также есть any
, который выполняет GET, POST, PUT, DELETE:
Route::any('desc', array('uses' => 'CarController@show'));
Если вам нужно получить и id
с вашего маршрута, вам придется добавить его в качестве параметра:
Route::post('car/{id}', array('uses' => 'CarController@show'));
И вам нужно будет получить доступ к своей странице:
http://myappt.al/public/car/22
Но если вы хотите получить к нему доступ:
http://myappt.al/public/22
Вам нужно будет сделать:
Route::post('{id}', array('uses' => 'CarController@show'));
Но это опасно , потому что он может захватить все маршруты, поэтому вы ДОЛЖНЫ установить его как свой последний маршрут .
И ваш контроллер должен принять этот параметр:
class CarController extends Controller { public function show($id) { dd("I received an ID of $id"); } }
РЕДАКТИРОВАТЬ:
Поскольку вы используете большинство своих маршрутов вручную, вы также можете пойти с индексом следующим образом:
Route::resource('create', 'DataController'); Route::get('/', 'CarController@index'); Route::post('create', array('uses' => 'CarController@create','uses' => 'DataController@index')); Route::post('update', array('uses' => 'CarController@update')); Route::post('store', array('store' => 'CarController@store')); Route::get('{id}', array('uses' => 'CarController@show')); Route::post('{id}', array('uses' => 'CarController@show'));