0

だから私は私のzendフレームワークアプリケーションであり、成功メッセージを表示するためにビュー成功変数をtrueに設定しようとしています。だから私の choosetags.phtml ive でこれを得た

<script language = "Javascript">
    $(document).ready(function() {
    $("#button").click(function () {
       var param1 = 'first';  //or get value from some DOM element
       var param2 = 'second'; //or get value from some DOM element

       $.ajax({
       url: '/rondas/saveronda',
       type: 'POST',
       data: {param1: param1, param2:param2 },
       datatype: "json"

});

    }); 
});

</script>
<?php if($this->success): ?>
    <div class="albox succesbox" style="z-index: 690;">
        <b>Sucesso :</b> A Palavra-passe foi alterada com sucesso. 
    </div>
<?php endif; ?>

<?php if($this->hasError): ?>
    <div class="albox errorbox" style="z-index: 690;">
        <b>Erro :</b> <?php echo $this->errorMessage; ?> 
    </div>
<?php endif; ?>
<div class="simplebox grid740" style="z-index: 500;">
    <div class="titleh" style="z-index: 400;">
        <h3>Criar Ronda</h3>
    </div>
    <div class="body" style="z-index: 380;">



    <script type="text/javascript">
    var t=0;
     $(function(){

             $("#toolbar").jqGrid({ 
                caption:"Tags",
                colNames:['ID','Nome','Cliente','Descrição','Modo','Estado'],
                colModel:[

                    {name:'id_tag',index:'id_tag',hidden:true},
                    {name:'tag_nome',index:'tag_nome'},
                    {name:'nome',index:'nome'},
                    {name:'descricao',index:'descricao'},
                    {name:'modo',index:'modo'},
                    {name:'estado',index:'estado'}


                ],
                datatype:"json",
                height:421, 
                rownumWidth:40,
                pager:'#ptoolbar',
                rowList:[10,20,30],
                rowNum:10,
                sortname:'id_tag',
                sortorder:'desc',

                viewrecords:true,
                width:700
            });
            $("#toolbar").jqGrid('navGrid','#ptoolbar',{del:false,add:false,edit:false,search:false});
            $("#toolbar2").jqGrid({ 
                caption:"Tags da Ronda",
                colNames:['ID','Nome','Cliente','Descrição','Modo','Estado'],
                colModel:[
                     {name:'id_tag',index:'id_tag',hidden:true},
                    {name:'tag_nome',index:'tag_nome'},
                    {name:'nome',index:'nome'},
                    {name:'descricao',index:'descricao'},
                    {name:'modo',index:'modo'},
                    {name:'estado',index:'estado'}


                ],
                datatype:"json",
                height:421, 
                rownumWidth:40,
                pager:'#ptoolbar2',
                rowList:[10,20,30],
                rowNum:10,
                sortname:'id_tag',
                sortorder:'desc',

                viewrecords:true,
                width:700
            });
            $("#toolbar2").jqGrid('navGrid','#ptoolbar2',{del:false,add:false,edit:false,search:false});
            $("#toolbar").jqGrid('gridDnD',{connectWith:'#toolbar2',dragcopy:true,beforedrop: function (ev, ui, getdata, $source, $target) {
        var names = $target.jqGrid('getCol', 'id_tag');

        if ($.inArray(getdata.id_tag, names) >= 0) {
            // prevent data for dropping
            ui.helper.dropped = false;
            alert("A tag ja existe na ronda");

        }
     else
        {

          document.getElementById("tagini").innerHTML= document.getElementById("tagini").innerHTML +"<option value="+getdata.id_tag+">"+getdata.tag_nome+','+getdata.nome+','+getdata.descricao+','+getdata.modo+"</option>";
document.getElementById("tagfim").innerHTML= document.getElementById("tagfim").innerHTML +"<option value="+getdata.id_tag+">"+getdata.tag_nome+','+getdata.nome+','+getdata.descricao+','+getdata.modo+"</option>";        }}});

    });

    $(function(){
        // Attach the dynatree widget to an existing <div id="tree"> element
        // and pass the tree options as an argument to the dynatree() function:
        $("#tree").dynatree({
            initAjax: {
        url: "/locais/tree"
        },
        onActivate: function(node) {
      t=node.data.key;
      if(t!=0)
      { 

      $("#echoActive").text(node.data.title);
      $("#tables").show();
       $("#toolbar").jqGrid('setGridParam',{url:"/rondas/choosetags/id/"+t}).trigger("reloadGrid");
       reloadGrid();


      }
      else
      {          
      $("#echoActive").text("-");    
       $("#tables").hide();

      } 

        }
        });


    });


    </script>
   <div class="st-form-line" style="z-index: 680;">
<span class="st-labeltext">Escolher a localização:</span>
<div id="tree" > </div>


<div class="clear" style="z-index: 670;"></div>
</div>
 <!-- Add a <div> element where the tree should appear: -->
<div class="st-form-line" style="z-index: 680;">
<span class="st-labeltext">Localização:<span id="echoActive">-</span></span>
<div id="tables" style="display:none" >


    <table id="toolbar"></table>
    <div id="ptoolbar"></div>
    </div>

<div class="clear" style="z-index: 670;"></div>
</div>

<div class="st-form-line" style="z-index: 680;">
<span class="st-labeltext">Tags da ronda:</span>



    <table id="toolbar2"></table>
    <div id="ptoolbar2"></div>


<div class="clear" style="z-index: 670;"></div>
</div>  

<div class="st-form-line" style="z-index: 680;">
<span class="st-labeltext">Nome da ronda:</span>

   <input type="text" name="nomeronda" id="nomeronda">




<div class="clear" style="z-index: 670;"></div>
</div>     
 <div class="st-form-line" style="z-index: 680;">
<span class="st-labeltext">Tag Inicial:</span>


<select id="tagini"  name="tagini">  
</select> 
<div class="clear" style="z-index: 670;"></div>
</div>
 <div class="st-form-line" style="z-index: 680;">
<span class="st-labeltext">Tag Final:</span>


<select id="tagfim"  name="tagfim">  
</select> 
<div class="clear" style="z-index: 670;"></div>
</div> 
 <div class="st-form-line" style="z-index: 680;">
<span class="st-labeltext">Ordem:</span>


<select id="ordem"  name="ordem">
    <option value="Sim">Sim</option>
    <option value="Não">Não</option>
</select> 
<div class="clear" style="z-index: 670;"></div>
</div> 
<div class="button-box" style="z-index: 460;">
<input id="button" class="st-button" type="submit" value="Submit" name="button">
<input id="button2" class="st-clear" type="reset" value="Cancel" name="button">
</div>

</div>
    </div>

したがって、ユーザーがデータを送信するときに選択すると、/rondas/saveronda への ajax 呼び出しが行われます。このアクションでは、データをデータベースに保存し、成功したら、/rondas/chooserondas にリダイレクトして、成功メッセージ、どうすればこれを達成できますか..これが/rondas/saverondaのコードです

   public function saverondaAction()
    {
        // action body

           $this->_helper->layout()->disableLayout();
            $this->_helper->viewRenderer->setNoRender(true);
             if($this->_request->isXmlHttpRequest())
        {


        $param1 = $this->_request->getParam('param1');
$param2 = $this->_request->getParam('param2');
//save data on the db and return to the /rondas/choosetags and display sucess    message.          
             }

    }

これが /rondas/choosetags のコードです

 public function choosetagsAction()
    {



        // action body
         if($this->_request->isXmlHttpRequest())
        {
           $request=  $this->getRequest();
           $poll_id = $request->getParam('id');
           $this->_helper->layout()->disableLayout();
           $this->_helper->viewRenderer->setNoRender(true);

            Zend_Paginator::setDefaultScrollingStyle('Sliding');
            $page = $this->_getParam('page', 1);
            $limit = $this->_getParam('rows', 0);
            $sidx = $this->_getParam('sidx', 1);
            $sord = $this->_getParam('sord', 0);
            $totalrows = $this->_getParam('totalrows', false);
            if($totalrows)
                $limit = $totalrows;
            $tableModel = new Application_Model_Tags();
            $select = $tableModel->select();
            $select->setIntegrityCheck(false);
            $select->from('tags', array('id_tag','tag_nome', 'id_software', 'id_hardware','id_localizacao','descricao','modo','estado'))->joinInner('clientes', 'tags.id_cliente = clientes.id_cliente', array('nome'))->where('id_localizacao='.$poll_id);
            $filters = !empty($_REQUEST['filters']) ? (array) json_decode($_REQUEST['filters']) : array();

            $adapter = new Zend_Paginator_Adapter_DbTableSelect($select);
            $paginator = new Zend_Paginator($adapter);
            $paginator->setCurrentPageNumber($page)->setItemCountPerPage($limit);
            $count = $paginator->getTotalItemCount();
            $total_pages = $count > 0 ? ceil($count / $limit) : 1;
             $responce = new stdClass();
            $responce->page = $page > $total_pages ? $total_pages : $page;

            $responce->total = $total_pages;
            $responce->records = $count;
            $i = 0;
            foreach($paginator as $item)
            {
                $responce->rows[$i]['id'] = $item['id_tag'];

            $responce->rows[$i]['cell'] = array($item['id_tag'],$item['tag_nome'],$item['nome'],$item['descricao'],$item['modo'],$item['estado']);
                $i++;
            }
            echo json_encode($responce);

        } else
        {
            $this->_helper->layout()->pageTitle = 'Rondas';
            $this->_helper->layout()->pageDescription = 'Criar as rondas';
        }

    }

私が同じアクションとビューにいる場合、つまり、/rondas/choosetags に $this->view->sucess=true を配置すると、成功メッセージが表示されますが、設定したいメッセージを表示できますアクション /rondas/saveronda で成功変数を true に設定し、アクション /rondas/choose tags にリダイレクトして、成功メッセージを表示します。

4

1 に答える 1

0

直接できません。できることは、設定したいパラメーターを一時セッションに保存することです (たとえば、1 ホップ = 1 成功した要求の有効期限があります)。

$hopSession = new Zend_Session_Namespace('tempViewParams');
$hopSession->my_view_param1 = 'string with data';
$hopSession->setExpirationHops(1);

次のアクションで一時セッションから値を取得できます。もう 1 つの方法は、保存が成功したときにリダイレクト先の URL にパラメーターとして設定したいビューの値を追加することです (特に、真のパラメーターだけが必要な場合)。したがって、次のような URL:

/rondas/choosetags/sucess/1

したがって、次のようなものを choosetagsAction() に追加できます。

if(1 == $request->getParam('success'))( {
    $this->view->success = true;
}

もちろん、複数のパラメーターを通過させたい場合は、SESSION ソリューションが最も美しいでしょう。

于 2013-08-03T14:55:32.900 に答える