2013-03-24 17 views
6

नीचे कोड यह सब कहते हैं करने के लिए मेकअप से डेटा पासिंग ...Laravel 4: सेवा प्रदाता

// routes.php 
App::make('SimpleGeo',array('test')); <- passing array('test') 

// SimpleGeoServiceProvider.php 
public function register() 
{ 
    $this->app['SimpleGeo'] = $this->app->share(function($app) 
    { 
     return new SimpleGeo($what_goes_here); 
    }); 
} 

// SimpleGeo.php 
class SimpleGeo 
{ 
    protected $_test; 

    public function __construct($test) <- need array('test') 
    { 
     $this->_test = $test; 
    } 
    public function getTest() 
    { 
     return $this->_test; 
    } 
} 
+1

हैलो @schmaltz आप अपने प्रश्न के लिए एक जवाब पर पहुँच गए हैं में यह परीक्षण कर सकते हैं? मुझे एक ही समस्या है और समाधान की तलाश है क्योंकि मेरा एप्लिकेशन आपके जैसे समान आर्किटेक्चर का उपयोग करता है .. – Omranic

उत्तर

3

आप सेवा प्रदाता के अंदर वर्ग के लिए अपने परीक्षण सरणी पास करनी होगी

// NOT in routes.php but when u need it like the controller 
App::make('SimpleGeo'); // <- and don't pass array('test') 

public function register() 
{ 
    $this->app['SimpleGeo'] = $this->app->share(function($app) 
    { 
     return new SimpleGeo(array('test')); 
    }); 
} 

YourController.php

Public Class YourController 
{ 
    public function __construct() 
    { 
     $this->simpleGeo = App::make('SimpleGeo'); 
    } 
} 
+0

हाँ, मैंने देखा कि काम किया। मेरा मान स्थिर नहीं है और किसी भी तरह से पारित किया जाना है। उदाहरण के लिए: यह इनपुट के रूप में रूट में उपलब्ध है। –

+0

क्षमा करें, बस यह देखा। अगर मैं अनुप्रयोग ऐसा करते हैं यू की जरूरत http://stackoverflow.com/questions/15483542/laravel-4-way-to-inject-an-object-that-requires-configuration-into-a-controller –

7

आप के साथ वर्ग बाध्य करने के लिए कोशिश कर सकते हैं पैरामीटर सीधे आपके एप कंटेनर में

<?php // This is your SimpleGeoServiceProvider.php 

use Illuminate\Support\ServiceProvider; 

Class SimpleGeoServiceProvider extends ServiceProvider { 

    public function register() 
    { 
     $this->app->bind('SimpleGeo', function($app, $parameters) 
     { 
      return new SimpleGeo($parameters); 
     }); 
    } 
} 

आपके SimpleGeo.php को छूने से छोड़कर। आप अपने routes.php

$test = App::make('SimpleGeo', array('test')); 

var_dump ($test); 
+0

की तरह कुछ हो सकता है :: तुम्हारी तरह बांधो मुझे ऐप परिभाषित नहीं किया गया है। अगर मैं इसे अपने जैसा रखता हूं लेकिन मुझे प्राप्त होने वाले दूसरे पैरामीटर $ पैरामीटर जोड़ें चेतावनी: गुम तर्क 2 –

+0

यह अजीब बात है, क्योंकि मेरे लिए सामान्य रूप से काम कर रहा है। मैंने अपने ** SimpleGeo.php ** और ** SimpleGeoSeriveProvider.php ** को __/libraries__ फ़ोल्डर में रखा है (और composer.json फ़ाइल में पथ लोडर जोड़ा और फिर ** कंपोज़र डंप-ऑटोलोड ** कमांड जारी किया) और __app/config/app.php__ में प्रदाताओं सरणी में ** 'SimpleGeoServiceProvider' ** जोड़ा। बीटीडब्ल्यू, SimpleGeoServiceProvider.php में या आपके path.php में उठाई गई त्रुटि है? –

+0

ठीक है, मैंने "वर्कबेंच" कमांड के साथ मेरा निर्माण किया है, इसलिए यह वर्कबेंच/में रहता है। यह SimpleGeoServiceProvider में त्रुटि फेंक देता है। मैं दोबारा जांच करने जा रहा हूं और आपसे वापस आऊंगा। –

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