如何告诉cakephp去someurl.com/action/var1/var2

时间:2011-12-16 21:35:56

标签: cakephp cakephp-2.0

请耐心等待我,因为我是蛋糕菜鸟。我有这个应用程序,应该访问www.name.com/complexes/somecomplex/unitnumber。我可以正确地将它推进到www.name.com/complexes/somecomplex,但我不知道如何获得我的单位号码的完整路径。

这是我的控制器:

class ComplexesController extends AppController {
    public $name='Complexes';
    public $uses=array('User', 'Complex', 'Unit');
    public $layout='pagelayout';



    public function view() { 
    $this->set('complex', strtoupper($this->params['id']));
    $c=$this->Complex->find('first', array('conditions'=>array('complex_name'=>$this->params['id'])));
    $this->set('complex_data', $c);
}

}

这是我的路线

Router::connect('/complexes/:id', array('controller' => 'complexes', 'action' => 'view'));

我在哪里编写调用特定单元的操作?在我的“视图”动作或其他名为“单位”的动作中?我怎么告诉蛋糕路线?

1 个答案:

答案 0 :(得分:0)

我明白了!我必须在我的view()函数中传递一个名为$ unit的参数,我在其中设置条件以查找我在url($ unit)中输入的单位数。所以,我的代码最终看起来像这样:

public function view($unit=null) { 
    $this->set('complex', strtoupper($this->params['id']));
    $c=$this->Complex->find('first', array('conditions'=>array('complex_name'=>$this->params['id'])));
    $this->set('complex_data', $c);
    $u=$this->Unit->find('first', array('conditions'=>array('unitnum'=>$unit)));
    $this->set('unit', $u);
}

在我的路线文件中我添加了这一行:

Router::connect('/complexes/:id/*', array('controller' => 'complexes', 'action' => 'view'));

它有效!