有一个控制器:
use Phalcon\Mvc\Controller;
class ReferentielClientController extends Controller
{
public function indexAction(){
// moteur de template pour une View
$this->view->act_form = 'ReferentielClient/ajouterClient';
return $this->view->pick("client/listerClient");
}
public function ajouterClientAction(){
$this->view->action_form = 'ajouterClientExec';
return $this->view->pick("client/ajouterClient");
}
...
}
从view
我想调用控制器indexAction
的{{1}}方法。怎么做?
答案 0 :(得分:4)
简短的回答:你不能。
你不能,因为indexAction不是一个普通的方法,它是一个动作。任何人都不会以通常的方式调用操作,它们通过路径调用url。让我再解释一下:
使用MVC,我们使用以下路线: http://www.example.org/a/b/c
a我们称之为模块。 b是我们称之为控制器的。 而c就是我们所说的行动。
索引操作和默认模块不会出现在URL中。
那么,如何从视图中调用函数?最好不要。最好的方法是在控制器中执行所有操作并将该信息传递给视图。即:
public function indexAction(){
$this->view->myInfo = $allMyInformationInOneObject;
}
然后,在视图(index.phtml)中:
<p>
<?php echo $this->myInfo ?>
</p>
要点: 您无需从视图中调用任何控制器功能,只需从控制器中提供该信息即可。
好的,回答你的评论。你想要的不是调用该功能,而是将浏览器重定向到该动作。
所以,我想你已经在你的路由器中创建了你的路由,如果没有,请转到Zend documentation about routing。强烈建议创建路由而不是使用URL本身。
我猜您无法在按钮等上使用 href 进行正常重定向,因此您需要使用重定向器帮助程序。由于您不在控制器中,因此无法使用:
来使用帮助程序$this->_helper->redirector->gotoUrl($url);
所以你需要像这样实例化重定向器:
$redirector = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$redirector->gotoUrl($url);
这个$ url是路由器提供的URL,您可以在上面的链接中阅读。
可以这样做但我强烈建议不要从视图重定向,而是从控制器重定向。所有逻辑都保留在控制器中会很好。
我希望这有帮助!
答案 1 :(得分:1)
好的我找到了:我将href
设置为指向控制器:<a href="/resto/ReferentielClient" class="button default">Annuler</a>