【问题标题】:Laravel routingLaravel 路由
【发布时间】:2014-07-02 10:39:06
【问题描述】:

我是 laravel 新手,在路由方面遇到问题。

我想要做的是像这样使用我的路线

域/{控制器}/{动作}

这样我就可以去首页的测试页面了

首页/测试

文档对我来说真的没有意义,所以如果有人能指出我正确的方向,那就太好了。目前我正在为每一页硬编码我的路线。

【问题讨论】:

    标签: php laravel controller


    【解决方案1】:

    基本上你可以从:

    Route::get('Domain/{controller}/{action?}', function ($controller, $action = 'index') {
    
        $class = $controller.'Controller';
        $controller = new $class()
    
        return $controller - > {
            $action
        }();
    
    }) -> where(array('controller' = > '[a-z]+', 'action' = > '[a-z]+'))
    

    您可以使用 Route::any 更改 Route::get 以捕获所有内容

    其他简单的测试示例(应该可以工作:)

    Route::any('{controller}/{action?}', function($controller, $action = 'index') {

    $class = $controller . 'Controller';
    $controller = new $class();
    return $controller->{$action}();
    

    });

    【讨论】:

    • 用 Route::any 更改 Route::get 以捕获所有内容;)
    • 这是我想要的,但它似乎不起作用
    • 1) 控制器的名称是什么?它是否以“控制器”结尾,如果不是,您可以将其从代码中删除。 2) 返回 $controller->{$action}();是一条线。 3)什么是错误^^?
    • 它是带有“index”操作的“HomeController”,所以我希望像 domain.com/home/index 一样使用它
    • 您是否从 Route::get 中删除了“Domain/”?
    【解决方案2】:
    Basic GET Route
    
    Route::get('controller/method', function()
    {
     //
    });
    
    Basic POST Route
    
    Route::post('controller/method', function()
    {
    
    });
    
    Named Route:
    
    Route::get('controller/action', array('uses' =>'Controller@method'));
    

    假设它是你的表单动作:

    {{ Form::open(array('route' => 'register.store')) }}
    

    那么你可以将路由的代码写成:

    Route::get('register', array(
      'uses' => 'RegisterController@index',
      'as' => 'register.index'
    ));
    Route::post('register', array(
      'uses' => 'RegisterController@store',
      'as' => 'register.store'
    ));
    

    【讨论】:

      【解决方案3】:

      我对 Laravel 框架了解不多。但总的来说,这应该可行:

      Route::get('Domain/{controller}/{action}', function($controller, $action)
      {
          //
      })
      ->where(array('controller' => '[a-z]+', 'action' => '[a-z]+'))
      

      【讨论】:

      • 我在这个函数中返回什么?
      【解决方案4】:

      你可以这样设置路由:

      Route::get('/orders/nieuw', 'OrdersController@nieuw');
      Route::post('/orders/nieuw', 'OrdersController@save_nieuw');
      Route::get('/orders/edit/{orderId}', 'OrdersController@edit');
      Route::post('/orders/edit/{orderId}', 'OrdersController@save_edit');
      Route::get('/orders/show/{idPartij}', 'OrdersController@show');
      Route::get('/orders/show_row/{idPartij}/{row_id}', 'OrdersController@show_row');
      Route::get('/orders/{active?}', 'OrdersController@index');
      

      简化版:

      Route::get 简单地说:当我们收到一条满足条件的get route时,做一些事情。

      条件('/orders/nieuw' 位于转换为http://www.domain.com/orders/nieuw 的URL 中

      如果满足条件,将在哪里使用OrdersController并执行函数nieuw(这是public function内的public function

      post 请求同样适用。

      你可以通过{param} 传递参数。如果你有一个不必要的参数,你可以使用{param?}

      如果您需要更多信息,请告诉我

      编辑 1 如果你读过this,那么你应该说以下是它所能得到的最接近的:

      Route::get('home/test');
      Route::get('home/test2');
      Route::resource('home', 'HomeController');
      

      这样,你只需要声明控制器1次,非标准链接...

      【讨论】:

      • 这就是我目前正在发生的事情。我只是想要一种不必为每个操作指定路线的方法。
      猜你喜欢
      • 2020-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 2020-04-05
      • 2021-08-17
      相关资源
      最近更新 更多