首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cakephp传递参数

Cakephp传递参数
EN

Stack Overflow用户
提问于 2013-02-20 10:18:39
回答 2查看 2.2K关注 0票数 2

你好,我的代码不能在CakePHP框架中工作,它显示了一个错误消息。

网址:

代码语言:javascript
复制
http://domainname.com/About/param1/param2

代码:

代码语言:javascript
复制
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');
    }
}

错误消息:

代码语言:javascript
复制
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

在创建函数param1之后,我可以得到param2,但是我需要在index函数中同时获得param1param2,而不需要创建另一个操作。

请帮帮我,谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-20 10:26:19

如果你去了http://domainname.com/About/index/param1/param2,你的原始代码就能工作了。

如果您不希望index在url中(我假设您不需要),那么您需要定义一个路由。

将此添加到您的路线:

代码语言:javascript
复制
Router::connect(
    '/About/*',
    array('controller' => 'About', 'action' => 'index')
);

若要自动路由未指定操作但有params可转到index操作的请求,请执行以下操作。但是,您需要为任何新的About操作添加一条路由,以阻止对它们的请求在默认情况下进行索引。

票数 3
EN

Stack Overflow用户

发布于 2013-02-20 10:32:46

您可能访问此URL而不指定操作名称(索引)如下:

/about/param1/param2

这将无法工作,因为Cake希望看到操作名称后面的控制器名称。在本例中,param1被视为操作名称。您可以使用URL访问操作

/about/index/param1/param2

要克服这种情况,为您的路由器制定一条新规则:

代码语言:javascript
复制
Router::connect(
    '/about/:param1/:param2',
    array('controller' => 'about', 'action' => 'index'),
    array('param1', 'param2')
);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14977359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档