我有以下路线:
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
'admin' => 'AdminController',
'site' => 'SiteController'
]);
然后我在SiteController
:
/**
* Get site details and pass to view
*
* @param Site $site
* @return mixed
* @internal param $site_id
*/
public function getDetails( Site $site )
{
return $site;
}
当我转到网址site.com/site/details/13
时,它不会返回网站对象。
我已将$router->model( 'one', 'App\Site' );
添加到RouteServiceProvider
并且它可以正常运行,但是如果以后我想要添加另一个这样的控制器但是将其用于jobs
,并再次使用getDetails
方法并传递App\Job
对象?它会自动发送App\Site
模型。
那么有什么方法可以防止这种情况发生?
答案 0 :(得分:1)
我对Laravel的有限知识告诉我,你的路径控制器函数中不能有模型/对象作为参数,并且你不需要$router->model( 'one', 'App\Site' );
之类的东西来做这件事。
我假设你想做这样的事情:
至于你的路线:
Route::controllers([
'auth' => 'Auth\AuthController',
'password' => 'Auth\PasswordController',
'admin' => 'AdminController',
'site' => 'SiteController',
'jobs' => 'JobController',
]);
在SiteController
:
use Illuminate\Http\Request;
use App/Site; //replace with namespace of model
public function getDetails($id)
{
//code for fetching the site object, depends on how your structure is,
//like $site = App\Site::find($id); etc
return $site;
}
同样,您的JobController
将类似于:
use Illuminate\Http\Request;
use App/Job; //replace with namespace of model
public function getDetails($id)
{
//code for fetching the job object, depends on how your structure is,
//like $job = App\Job::find($id); etc
return $job;
}