2016-06-10 2 views
1

Привет всем, что я играю с Symfony3, читаю этот docs об обслуживающем контейнере. Acording к документации службы, объявленных в приложение/Config/services.yml как так:Symfony3 Service container docs error

# app/config/services.yml 
services: 
    app.mailer: 
     class:  AppBundle\Mailer 
     arguments: [sendmail] 

и я могу к нему доступ в мой контроллер/классов, как это:

<?php 

namespace Test\TestBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class HelloController extends Controller 
{ 
    public function sendEmailAction() 
    { 
     // ... 
     $mailer = $this->get('app.mailer'); 
     var_dump($mailer);die(); 
//  $mailer->send('[email protected]', ...); 
    } 
} 

я сделал exacley что, но я получаю эту ошибку:

You have requested a non-existent service "app.mailer". 

Что я могу сделать неправильно в этом простом примере, я что-то упустил.

Я также заметил, что есть еще один файл services/yml в разделе Bundle/Resources/config.srvices.yml. Какой из них использовать, когда и почему ...?

+0

Проверьте документы еще раз, потому что ваш аргумент sendmail неверен, хотя сам по себе не вызывает проблемы. Я подозреваю, что вы работаете в режиме производства и, возможно, не очищаете кеш. И вы используете S3 вместо старой версии S2? – Cerad

+0

Эй, почему аргумент был бы неправильным? в любом случае это должно возникнуть с другой ошибкой в ​​этом случае, я очистил кеш в моем уре, я делаю specyfie localhost: 8000/app_dev.php/whatever. Кроме того, документы говорят, что они версии 3.1. – John

+0

Просто подумал немного странно, что вы хотите отправить строку «sendmail» в качестве аргумента конструктора. Но, как уже упоминалось, это не приведет к такой ошибке. Вы уверены, что используете пробелы, а не вкладки в файле yaml? В разделе импорта config.yml все еще есть службы? Все очень загадочно. Можете попробовать начать новый проект и ничего не делать, кроме создания одной службы и вызова ее из контроллера по умолчанию. – Cerad

ответ

0

Служба app.mailer, похоже, не существует. Вы должны проверить его, выполнив эту команду в кли: bin/console debug:container app.mailer

I have also noticed that there is another services/yml file under Bundle/Resources/config.srvices.yml. Which one to use when and why...?

Вы должны использовать Bundle/Resources/config/* только если ваш пакет будет использоваться совместно с другим прикладным/с открытым исходным кодом. Если нет, используйте app/config/services.yml.

+0

для второй части, что у вас есть смысл, но опечатка в $ this ...? – John

+0

Потому что ошибка 'on null'? Можете ли вы поделиться всем контроллером? – mykiwi

+0

, пожалуйста, посмотрите мои обновления. – John

Смежные вопросы