2011-06-16 11 views
8

सिम्फनी 1.4 में, वर्तमान कार्रवाई से किसी अन्य एप्लिकेशन की कार्रवाई कैसे कॉल करें?सिम्फनी एकाधिक एप्लिकेशन इंटरैक्शन

public function executeActionA(sfWebRequest $request) 
{ 
    $this->redirect("http:://host/app/url_to_action"); 
} 

Symfony में प्रत्येक आवेदन इसलिए यदि आप किसी अन्य एप्लिकेशन का एक कार्रवाई कॉल करने की आवश्यकता, तो आप सीधे अनुरोध करने की आवश्यकता है, दूसरों से स्वतंत्र है:

उत्तर

1

वह कुछ इस तरह होगा ।

प्रत्येक ऐप को एक मुख्य नियंत्रक (फ्रंटएंड, बैकएंड, वेबएप) द्वारा दर्शाया जाता है, यह नियंत्रक प्रत्येक अनुरोध की संबंधित कार्रवाई (और फिल्टर जैसी अन्य चीजों आदि) के वितरण की देखभाल करता है।

मैं वास्तव में आप इस पढ़ने के लिए सलाह देते हैं, यह काफी अधिक व्याख्यात्मक होगा: Symfony - Inside the Controller Layer

+0

पूर्ण यूआरएल का उपयोग सुंदर से बहुत दूर है .. – Arend

+0

पूरी तरह से सहमत है, मैंने यह नहीं कहा कि यह सबसे अच्छा था, लेकिन यह एक तरीका है, और आप द्वारा पोस्ट की गई कलाकृतियों को देखते हैं, आप देखेंगे कि वे हैं अभी भी एक पूर्ण यूआरएल उत्पन्न करने के लिए पाठ के concatenation का उपयोग कर। – guiman

+0

बेशक, अंत में रूटिंग सिस्टम क्या करता है :) – Arend

7

यहां इस बारे में एक ब्लॉग पोस्ट है:

एक नहीं है प्लगइन इसके लिए:

और वहाँ कुछ ब्लॉगपोस्ट यह समझा रहे हैं:

अपने बैकएंड करने के लिए अपने दृश्यपटल के लिए रास्ते में करने के लिए

, वहाँ तीन आसान चरणों हैं:

1. अपने बैकएंड विन्यास में जोड़े निम्नलिखित दो तरीकों

इन विधियों बैकएंड मार्ग पढ़ा है, और इसका इस्तेमाल करते हैं मार्ग उत्पन्न करने के लिए। आपको लिंक को इसकी आपूर्ति करने की आवश्यकता होगी, क्योंकि php यह नहीं जानता कि आपने अन्य एप्लिकेशन के लिए अपने वेबसर्वर को कैसे कॉन्फ़िगर किया है।

// apps/backend/config/backendConfiguration.class.php 
class backendConfiguration extends sfApplicationConfiguration 
{ 
    protected $frontendRouting = null; 

    public function generateFrontendUrl($name, $parameters = array()) 
    { 
    return 'http://frontend.example.com'.$this->getFrontendRouting()->generate($name, $parameters); 
    } 

    public function getFrontendRouting() 
    { 
    if (!$this->frontendRouting) 
    { 
     $this->frontendRouting = new sfPatternRouting(new sfEventDispatcher()); 

     $config = new sfRoutingConfigHandler(); 
     $routes = $config->evaluate(array(sfConfig::get('sf_apps_dir').'/frontend/config/routing.yml')); 

     $this->frontendRouting->setRoutes($routes); 
    } 

    return $this->frontendRouting; 
    } 

    // ... 
} 

2. अब आप इस तरह के एक फैशन में अपने आवेदन करने के लिए लिंक कर सकते हैं:

$this->redirect($this->getContext()->getConfiguration()->generateFrontendUrl('hello', array('name' => 'Bar'))); 

3।

: चूंकि यह लिखने के लिए थोड़ा कठिन है, तो आप एक सहायक

function link_to_frontend($name, $parameters) 
{ 
    return sfProjectConfiguration::getActive()->generateFrontendUrl($name, $parameters); 
} 

sfCrossLinkApplicationPlugin इस, इस, लेकिन थोड़ा सरल फैशन में, आप एक वाक्य रचना इस के समान का उपयोग करने में सक्षम होगा करता है बना सकते हैं

<?php if($sf_user->isSuperAdmin()):?> 
    <?php link_to('Edit Blog Post', '@backend.edit_post?id='.$blog->getId()) ?> 
<?php endif ?> 
संबंधित मुद्दे