【问题标题】:Kohana 3 - How do I make the Default Route pass arguments to the Controller's Action?Kohana 3 - 如何使默认路由将参数传递给控制器​​的操作?
【发布时间】:2010-05-13 19:20:45
【问题描述】:

我的控制器动作需要一个参数,但我无法让 KO3 的路由器在默认路由中传递此参数。这种事情适用于其他路线。这是一个澄清的例子......

在 bootstrap.php 中...

Route::set('default', '(<controller>(/<action>(/<the_required_param>)))')
 ->defaults(array(
  'controller' => 'DefaultController',
  'action'     => 'index',
  'the_required_param' => 'some_default_value',
 ));

在控制器文件中...

class Controller_DefaultController extends Controller
{
    public function action_index($the_required_param)
    {
        echo 'value: ' . $the_required_param;
    }
}

【问题讨论】:

  • DefaultController 应该是 Controller_Default 并且函数 index 应该是 action_index。
  • @dusan thx,指出示例中的错误。问题是由贪婪路由引起的(将匹配任何 uri),因此路由器从未到达默认路由。
  • 我曾经遇到过同样的“贪婪路线”问题,我花了很长时间才找到原因!

标签: php kohana kohana-3


【解决方案1】:

获取指定参数的另一种方法是:

$this->request->param('the_required_param');

您还应该确保按顺序定义路线,并确保它符合预期。

【讨论】:

    【解决方案2】:

    问题是由贪婪路由引起的(匹配任何 uri),因此路由器从未到达默认路由。下面是一个示例供参考...

    // The parenthesis caused this route to match any uri
    Route::set('route-4-params', '(<controller>/<action>/<p1>/<p2>/<p3>/<p4>)');
    
    Route::set('default', '(<controller>(/<action>))')
        ->defaults(array(
            'controller' => 'default_controller',
            'action'     => 'index',
            'the_required_param'     => 'somevalue',
        ));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-25
      • 1970-01-01
      • 1970-01-01
      • 2012-09-24
      • 1970-01-01
      • 1970-01-01
      • 2015-08-18
      • 1970-01-01
      相关资源
      最近更新 更多