2010-12-05 79 views

回答

2

您需要從您的視圖撥打電話。你想要做什麼取決於你試圖達到的目標。

例如:

public function executeFormSubmitAction(sfWebRequest $request) 
{ 
    $this->form = new MyForm(); 
    $this->form->bind($request->getParamter($$this->form->getName()); 
    $this->valid = null; 

    if($this->form->isValid()) 
    { 
     // do stuff with values 

     $this->valid = true; 
    } 
    else 
    { 
     $this->valid = false; 
    } 
} 

然後在您的視圖:

<?php if($valid === true): ?> 
    Thanks! 
<?php else: ?> 
    <?php echo $form; ?> 
    <?php if(false === $valid): ?> 
    <!-- your javascript call and related stuff --> 
    <?php endif; ?> 
<?php endif; ?> 

如果沒有爲$valid每個條件的觀點完全不同的結構,那麼你可能想用實際工作中放所有這些在局部區域中,然後在條件內使用include_partial,或者您可以使用單獨的視圖模板並在您的動作中使用setTemplate來渲染正確的一個......或者如果它們非常複雜並且需要特殊的日誌您可以使用forward並完全分開操作。或者,如果這是一個ajax提交,您可以返回json而不是html,然後執行您的js函數作爲回調的一部分 - 檢查返回的json是否包含標記驗證結果的變量。

它真的取決於你。