首页 > 解决方案 > laravel 路由中找不到页面错误

问题描述

我是新手laravel,我写了一条路线

Route::resource('contract', 'ContractController');
Route::group(['prefix' => 'contract'], function () {
    Route::get('data', 'ContractController@data');
});

我的控制器文件是:

public function data(Datatables $datatables)
{
    $contracts = $this->contractRepository->getAll()
        ->get()
        ->map(function ($contract) {
            return [
                'id' => $contract->id,
                'start_date' => $contract->start_date,
                'end_date' => $contract->end_date,
                'description' => $contract->description,
                'name' =>  '',
                'user' => '',
            ];
        });

    return $datatables->collection($contracts)
        ->addColumn('actions', '@if(Sentinel::getUser()->hasAccess([\'contracts.write\']) || Sentinel::inRole(\'admin\'))
                                    <a href="{{ url(\'contract/\' . $id . \'/edit\' ) }}"  title="{{ trans(\'table.edit\') }}">
                                        <i class="fa fa-fw fa-pencil text-warning"></i> </a>
                                        @endif
                                 @if(Sentinel::getUser()->hasAccess([\'contracts.read\']) || Sentinel::inRole(\'admin\'))
                                 <a href="{{ url(\'contract/\' . $id . \'/show\' ) }}" title="{{ trans(\'table.details\') }}" >
                                        <i class="fa fa-fw fa-eye text-primary"></i> </a>
                                @endif
                                @if(Sentinel::getUser()->hasAccess([\'contracts.delete\']) || Sentinel::inRole(\'admin\'))
                                    <a href="{{ url(\'contract/\' . $id . \'/delete\' ) }}"  title="{{ trans(\'table.delete\') }}">
                                        <i class="fa fa-fw fa-times text-danger"></i></a>
                                 @endif')
        ->removeColumn('id')
        ->escapeColumns( [ 'actions' ] )->make();
}

当我使用 url 运行时,contract/data我得到了404 not found错误。在控制台中我也收到错误

No query results for model [App\Models\Contract].

请帮我解决问题

标签: phplaravellaravel-5.2

解决方案


只需像这样删除Route::resource('contract', 'ContractController');或放置它Route::group(['prefix' => 'contract'], function () { Route::get('data', 'ContractController@data'); });

Route::group(['prefix' => 'contract'], function () {
    Route::get('data', 'ContractController@data');
});
Route::resource('contract', 'ContractController');

您在路由上得到 404,/contract/data因为路由器实际上是从上层路由进入contract/{contract}ContractController@showRoute::resource('contract', 'ContractController');


推荐阅读