Как передать переменную из представления в действие контроллера в Zend Framework - PullRequest
0 голосов
/ 31 января 2012

На мой взгляд, у меня есть эта строка кода

<a href="<?php echo $this->url.'/login/calllogs/id/'.$record->phone_service_id;?>">Control Panel</a>

в моем контроллере входа У меня есть это действие

public function calllogsAction(){
    if(!Zend_Auth::getInstance()->hasIdentity()){
        $this->_redirect('login/login');
    } else{
        $request = $this->getRequest();
        $this->view->assign('url', $request->getBaseURL());
    }
}

Как я могу получить переменную вида ($record->phone_service_id;) в своем действии (calllogsAction)? Я не подаю, это просто ссылка. Я думаю, что я не могу сделать это так в моем действии calllogsAction

$request = $this->getRequest();
$phone_service_id =  $request->getParam("id");

Ответы [ 2 ]

1 голос
/ 31 января 2012

Если вы не хотите, чтобы идентификатор отображался в адресной строке, вам придется использовать POST.Используйте

<form method="post" action="<?php /*your URL here*/ ?>">

вместо простой ссылки, внутри формы:

<input type="hidden" name="id" value="<?php /*your id here*/ ?>"/>

и в контроллере используйте

$id = $this->getRequest()->getPost("id");
1 голос
/ 31 января 2012

Начальный ответ был таким же, как и ваша попытка, как оказалось.

Если вам не нужен идентификатор в адресной строке (имейте в виду, что любой может увидеть данные поста, если у них есть нужные инструментыв любом случае) тогда другой вариант - использовать POST с формой -

<form action="<?php echo $this->url.'/login/calllogs/id';?>" method="post">
<input type="hidden" name="id" value="<?php echo $record->phone_service_id; ?>" />
<input type="submit" name="submit" value="Control Panel" />
</form>

. Затем вам нужно использовать getPost вместо getParam в контроллере для получения переменной.

...