【问题标题】:Laravel 4 - URI Parameters in Implicit ControllersLaravel 4 - 隐式控制器中的 URI 参数
【发布时间】:2014-12-23 07:33:21
【问题描述】:

如何在隐式控制器内部的方法中获取 URI 参数?

首先,我定义一个基本路线:

Route::controller('users', 'UserController');

那么,

class UserController extends BaseController {

    public function getIndex()
    {
        //
    }

    public function postProfile()
    {
        //
    }

    public function anyLogin()
    {
        //
    }

}

如果我想在 URI 中传递其他参数,例如 http://myapp/users/{param1}/{param2} ,我如何在尊重方法中读取 param1param2 ?在这个例子中,getIndex()

【问题讨论】:

    标签: laravel laravel-4 parameters controller routes


    【解决方案1】:

    这是一种创建目录的方法,例如模型之间的层次结构(嵌套路由)

    假设相册有图像,我们想要一个相册控制器(用于检索相册数据)和一个图像控制器(用于检索图像数据)。

    Route::group(array('before' => 'auth', 'prefix' => 'album/{album_id}'), function()
    {
        // urls can look like /album/145/image/* where * is implicit in image controller.
        Route::controller('image', 'ImageController');
    
    });
    
    Route::group(array('before' => 'auth'), function()
    {
        // urls can look like /album/* where * is implicit in album controller.
        Route::controller('album', 'AlbumController');
    
    });
    

    【讨论】:

      【解决方案2】:

      如果你想拥有像http://myapp/users/{param1}/{param2} 这样的网址 你需要在你的控制器中有这样的:

      Route::get('users/{param1}/{param2}', 'UserController@getIndex');
      

      并访问它:

      class UserController extends BaseController {
      
          public function getIndex($param1, $param2)
          {
              //
          }
      
      }
      

      但是,嘿,你也可以这样做,路线是一样的:

      class UserController extends BaseController {
      
          public function getIndex()
          {
              $param1 = Input::get('param1');
              $param2 = Input::get('param2');
      
          }
      
      }
      

      但您的网址可能类似于:http://myapp/users?param1=value&param2=value

      【讨论】:

      • 可能这是唯一的方法。在这种情况下,我也想从隐式控制器中受益,但似乎我们不能这样做。如果没有其他人提供更好的解决方案,那么您将获得 ponts。 :)
      • 嗯,很多人说隐式控制器对于你项目的新开发者来说很难阅读和猜测(如果你有一个新的)。大多数人(包括我的偶像 jeffrey 方式)建议使用资源控制器或只是添加控制器的正常方式(例如 Route::post 或 Route::put)。但这是开发人员的偏好,我们都有不同的偏好:)
      猜你喜欢
      • 2013-11-14
      • 2017-03-07
      • 2013-05-28
      • 2014-02-02
      • 2014-04-04
      • 1970-01-01
      • 2013-01-03
      • 2013-06-10
      • 1970-01-01
      相关资源
      最近更新 更多