【问题标题】:Laravel - can I control routes by rule?Laravel - 我可以按规则控制路线吗?
【发布时间】:2015-06-10 23:19:29
【问题描述】:

所以我有一个 Laravel 控制器 (MainController.php),其中包含以下几行:

...
public function _settings_a(){
    return view('_settings_a');
}
public function _settings_b(){
    return view('_settings_b');
}
public function _settings_c(){
    return view('_settings_c');
}
public function _settings_d(){
    return view('_settings_d');
}
public function _staff_a(){
    return view('_staff_a');
}
public function _staff_b(){
    return view('_staff_b');
}
public function _staff_c(){
    return view('_staff_c');
}
...

而我的routes.php如下:

Route::any('_staff_a''MainController@_staff_a');
Route::any('_staff_b''MainController@_staff_b');
...
etc.

如果我改变主意,似乎有很多台词和很多事情要改变......

我想知道是否可以在 routes.php 中使用一些正则表达式,在 MainController.php 中使用等效的正则表达式来处理以下划线 (_) 开头的路由?

Laravel 专家可以分享一些技巧/建议吗?我对框架很陌生。

【问题讨论】:

    标签: php laravel laravel-5 laravel-routing


    【解决方案1】:

    当然 - 只需将其添加为参数。例如。像这样:

    Route::any('_staff_{version}', 'MainController@_staff');
    
    public function _staff($version) {
        return view('_staff_'.$version);
    }
    

    【讨论】:

      【解决方案2】:

      我认为你不需要弄乱正则表达式。您可以使用隐式控制器Route::controller(),这不是最好的解决方案,但会做我认为您想要的。

      所以不是

      Route::any(..)

      你可以的

      Route::controller('url', 'MainController');

      因此,您到任何“url”的路线都会将您发送到此控制器。紧随其后的是“/”,然后在控制器中添加要调用的任何方法。

      这是一个例子:

      我的网址:'http://www.example.com/users'

      // routes.php
      Route::controller('users', UserController');
      
      // UserController.php
      public function getIndex()
      {
        // index stuff
      }
      

      现在我发送如下请求:http://www.example.com/users/edit-user/125

      // UserController.php
      public function getEditUser($user_id)
      {
        // getEditUser, postEditUser, anyEditUser can be called on /users/edit-user
        // and 125 is the parameter pasted to it
      }
      

      这样做应该让您能够只向 url 发送请求(post 或 get),并且控制器应该能够根据 url 调用正确的方法。

      这里有一些关于它的更多规则:http://laravel.com/docs/5.1/controllers#implicit-controllers

      【讨论】:

        猜你喜欢
        • 2014-08-11
        • 1970-01-01
        • 1970-01-01
        • 2019-06-30
        • 2011-11-30
        • 2015-01-23
        • 2019-01-14
        • 2019-02-28
        • 1970-01-01
        相关资源
        最近更新 更多