2013-02-20 46 views
2

您好,我的代码在CakePHP框架中不起作用,它显示一条错误消息。Cakephp通过参数

网址:

http://domainname.com/About/param1/param2 

代码:

class AboutController extends AppController { 

    public $name = 'About'; 
    public $helpers = array('Html'); 

    public function index($arg1, $arg2) 
    { 
     print_r($this->request->params['pass']); 
     $this->set('title_for_layout','Sarasavi Bookshop - About Sarasavi Bookshop'); 
     $this->set('nameforfiles','about'); 
    } 
} 

错误消息:

Missing Method in AboutController  
Error: The action param1 is not defined in controller AboutController 
Error: Create AboutController::param1() in file: app\Controller\AboutController.php. 

<?php 
class AboutController extends AppController { 


    public function param1() { 

    } 

} 

Notice: If you want to customize this error message, create app\View\Errors\missing_action.ctp 

创建FUNC后我可以得到param2,但是我需要得到param1param2两者,在index函数中没有创建另一个动作。

请帮助我,谢谢

回答

2

如果你去http://domainname.com/About/index/param1/param2

如果你不想在URL中index做,因为我认为你不这样做你原来的代码将工作,那么你需要定义一条路线。

添加到您的路线:

Router::connect(
    '/About/*', 
    array('controller' => 'About', 'action' => 'index') 
); 

自动不指定动作,但这样做将请求路由有PARAMS去你index行动。尽管如此,您仍然需要为任何新的About操作添加一条路由来停止对它们的请求,以使其不会进入索引。

+1

是它的工作,非常感谢你!马特 – iswan 2013-02-20 10:36:16

2

你可能访问此网址没有这样的规定动作名称(指数):

/about/param1/param2

这将无法正常工作,蛋糕希望看到控制器名之后的动作名称。在这种情况下,param1被视为操作名称。 你可以用URL

/about/index/param1/param2

访问你的动作要克服这种情况,作出新的规则,以你的路由器:

Router::connect(
    '/about/:param1/:param2', 
    array('controller' => 'about', 'action' => 'index'), 
    array('param1', 'param2') 
);