2010-07-20 12 views
10

मेरे पास एक ऐसा फॉर्म है जिसे मैं कार्रवाई करने की कोशिश कर रहा हूं। मैं अपने बूटस्ट्रैप में बनाए गए एक रूट का उपयोग करके, मेरे फॉर्म फ़ाइल (जो Zend_Form को विस्तारित करता है) के अंदर कार्रवाई को घोषित करना चाहता हूं। आमतौर पर मैं जैसेनामित मार्गों का उपयोग करके ज़ेंड फॉर्म सेटएक्शन

$this->url(array(), 'route-name'); 
ध्यान में रखते हुए

, या

$this->_helper->url(array(), 'route-name'); 
नियंत्रक में

कुछ करना जब मैं एक मार्ग का उपयोग करना चाहते हैं।

मैं Zend_Form के भीतर से एक मार्ग कैसे कॉल करूं?


संपादित करें: मैं Zend_Form में एक मार्ग लोड करने का प्रयास छोड़ दिया है। शायद भविष्य में रिलीज में आसानी से ऐसा करने के लिए एक समारोह हो सकता है?

मैं अपने फार्म के लिए एक viewScript बनाया है और उस में मार्ग की स्थापना की है: रूप init समारोह में:

$this->setDecorators(array(
    'PrepareElements', 
     array(
      'ViewScript', array(
        'viewScript' => 'forms/formView.phtml' 
      )))); 

और देखने फ़ाइल में:

<form method="post" action="<?php echo $this->url(array(), 'route-name'); ?>" enctype="application/x-www-form-urlencoded"> 
    <?php 
     foreach ($this->element->getElements() as $element) 
     { 
      echo $element; 
     } 
    ?> 
</form> 
+0

न इतनी जल्दी हार सकता है। बस हमें अपने प्रश्न का उत्तर देने का समय दें;) –

उत्तर

18

विधि 1: जाओ राउटर

// in your form 
public function init() 
{ 
    $router = Zend_Controller_Front::getInstance()->getRouter(); 
    $url = $router->assemble(
     array(
      'paramterName0' => 'parameterValue0', 
      'paramterName1' => 'parameterValue1', 
     ), 
     'routeName' 
    ); 

    $this->setAction($url); 
    ... 
} 

विधि 2: व्यू ऑब्जेक्ट का एक उदाहरण प्राप्त करें और कॉल करें ई यूआरएल-व्यू-हेल्पर सीधे

// in your form  
public function init() 
{ 
    $url = Zend_Layout::getMvcInstance()->getView()->url(array(), 'routeName'; 
    $this->setAction($url); 
    ... 
} 

मैं विधि 1. पसंद करते हैं यह अधिक वर्बोज़ है, लेकिन आप एक निर्भरता अपने रूप में कम है।

+0

विधि एक के साथ समस्या यह है कि मेरे पास बूटस्ट्रैप में पहले से ही रूट हैं। विधि दो शानदार है! –

+0

@ डिकी विधि 1 एक नया मार्ग परिभाषित नहीं करता है। यह एक मौजूदा मार्ग के साथ एक यूआरएल इकट्ठा करता है। Zend_View_Helper_Url में एक नज़र डालें। यह वही करता है: राउटर प्राप्त करें और इकट्ठा करें। –

+0

आप सही हैं। मैं कोड को गलत पढ़ता हूं।मैंने सोचा कि यह एक नया मार्ग बना रहा था, मार्ग का उपयोग नहीं कर रहा था। यही वह है जो मैं बाद में हूं। धन्यवाद। विधि 1 के लिए –

1

अगर मेरे नियंत्रक कार्रवाई में:

$this->view->form = $form; 

मैं दृश्य सहायक यूआरएल का उपयोग मेरे विचार लिपि (xxx.phtml) में प्रपत्र कार्रवाई यूआरएल उत्पन्न करने के लिए होगा:

$url = $this->url(array('controller'=>'my-controller-name', 
        'action'=>'my-action-name'), 
       'my-route-name' 
      ); 

$this->form->setAction($url); 

echo $this->form; 
0

मैं नहीं जानता जब इसे जोड़ा गया था, लेकिन एक आसान समाधान भी है।

आप getView() के साथ फ़ॉर्म की दृश्य वस्तु पुनर्प्राप्त कर सकते हैं, जिसके पास पंजीकृत मार्गों तक पहुंच है।

//In the form 
$this->setAction($this->getView()->url(array('param1' => 'value1'), 'routeName')); 
1

आजकल आप getView() विधि के माध्यम से Zend_View वस्तु का उपयोग कर सकते Zend_Form वर्गों पर:

// init your form  
public function init() 
{ 
    $view = $this->getView(); 
    $url = $view->url(array('module'=>'login','action'=>'login')); 
    $this->setAction($url); 
    ... 
} 

जेडएफ 1.8+ पर इस मदद

संबंधित मुद्दे