我是 Laravel 的新手,我还不太确定所有路由的东西,所以我想以我当时熟悉的方式做事,即通过 url 访问控制器方法。所以我有一个名为 User 的控制器,其中有一个名为 getLogin() 的函数。我想通过“mydomain.com/user/login”访问它。它目前不起作用,那么我该怎么做呢?
3 回答
虽然我同意 Phil Sturgeon 的文章,即对于典型的应用程序,明智的做法是使路由尽可能明显,但在某些情况下,控制器方法方案的 url 段可能很方便。我有时会使用 Laravel 对一些代码进行原型设计/测试,并且需要一个可预测的 url-to-method 来衍生示例。你可以使用 Request::segment() 抓取片段,并使用 Laravel 的Str::camel()将其驼峰化。例如,使用如下路线:
Route::get('/lara-learn/{method}',
array(
'as' => 'lara-learn_' . Request::segment(2),
'uses' => 'LaraLearnController@' . Str::camel( Request::segment(2) )
)
);
您可以访问/lara-learn/lara-config
并登陆 laraConfig() 方法:
class LaraLearnController extends BaseController {
public function laraConfig(){
return "hey from laraConfig";
}
}
如果我们愿意,我们也可以从 url 中动态选择控制器,比如使用第一段。所以我们可以更加概括我们的路线:
Route::get('/{controller}/{method}',
array(
'as' => Request::segment(1) . '_' . Request::segment(2),
'uses' => studly_case( Request::segment(1) ) . 'Controller@' . Str::camel( Request::segment(2) )
)
);
访问/lara-learn/lara-config
应该让我们了解上面的 laraConfig 方法示例。
Laravel does not automatically map routes in controller/method
fashion.
You have not posted what is in your routes.php file, but one of the simplest approaches is to do this:
Route::get('users/login', array('as' => 'login', 'uses' => 'User@getLogin'));
There are multiple approaches, though. You might consider reading the docs about routing
Route::resource('/recipes', 'recipesController@index');
你必须像这样制作路线,你必须在 url 中访问它
本地主机/项目名称/公共/食谱