Как сказать cakephp перейти на someurl.com/action/var1/var2 - PullRequest
0 голосов
/ 17 декабря 2011

Пожалуйста, потерпи меня, потому что я новичок. У меня есть это приложение, которое должно идти в 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 голосов
/ 18 декабря 2011

Я понял это! Мне пришлось передать аргумент, называемый $ unit, в моей функции view (), где я установил условия для поиска номера устройства, который я ввел в 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'));

И это сработало!

...