在laravel路由中找不到页面错误

问题描述 投票:0回答:1

我是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].

请帮我解决这个问题

php laravel laravel-5.2
1个回答
1
投票

只需删除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');

你在路线/contract/data上得到404,因为路由器实际上是从contract/{contract}的上部路线引导到ContractController@showRoute::resource('contract', 'ContractController');

© www.soinside.com 2019 - 2024. All rights reserved.