私は、持続的トランザクションで成功または失敗した場合のユーザーへの応答を処理するプラグインを実装しようとしています。レスポンスがfalseの場合は、フォームのサブミットを実行し、プレースホルダメッセージを表示するアクションに_forwardを使用しますが、レスポンスがtrueの場合は、表示された新しいレコードで参照に_redirectを使用します。プラグイン内のプレースホルダを使用しているZF
私の問題は、_redirectを使用するとブラウザにプレースホルダメッセージが表示されないということです。私はここのコードを紹介します:
/**
* Plugin
*/
class Application_Plugin_PostMessage extends Zend_Controller_Plugin_Abstract
{
public function postDispatch(Zend_Controller_Request_Abstract $request)
{
$message = $request->getParam('message');
$error = $request->getParam('error');
if (null !== $message || null !== $error) {
$layout = Zend_Layout::getMvcInstance();
$view = $layout->getView();
$placeHolder = $view->placeholder('message');
$placeHolder->setPostfix('</div>');
if (null !== $error) {
$placeHolder->setPrefix('<div class="errorMessage">')
->append($error);
}
elseif (null !== $message) {
$placeHolder->setPrefix('<div class="infoMessage">')
->append($message);
}
}
}
}
/**
* Controller
*/
class My_FooController extends Zend_Controller_Action
{
public function init()
{
$front = Zend_Controller_Front::getInstance();
$front->registerPlugin(new Application_Plugin_PostMessage());
}
...
public function browseAction()
{
...
// No message is shown here on redirect
...
}
public function newAction()
{
...
// This code shows the placeholder on _forward call
...
}
public function insertAction()
{
if(true) {
return $this->_redirect('/my/foo/browse?message='
. urlencode("success message"));
}
else {
return $this->_forward('new', null, null, array(
'error' => 'error messsage'
));
}
}
}
私は[F5]を使用することを望んでいないので、私は成功に_forward使用することはできませんキーが挿入アクションを繰り返し、事前に
おかげ
ありがとうございます。これは私の問題を解決します –
解決済みとしてマークしてください – Ashley