Symfony2 - सभी नियंत्रकों के लिए तरीके - PHP, symfony

मेरे सिम्फनी 2 एप्लिकेशन का विकास, मैं सभी नियंत्रकों में उपलब्ध विधियों के लिए, रूबी पर रूबी की तरह, पसंद करना चाहता हूं। RoR नियंत्रकों में बस बाद में वारिस ApplicationController और वह वह जगह है जहां आप सभी विधियों को डालते हैं। लेकिन सिम्फनी तरीका क्या है, यहां अच्छा अभ्यास क्या है?

मैं चाहता हूं कि कार्यक्षमता वास्तव में बहुत सरल है, इस तरह कुछ:

public function showAction()
{
$user = $this->container->get("security.context")->getToken()->getUser();
}

मैं वर्तमान उपयोगकर्ता को यहां लोड कर सकता हूं, और मैं इस कार्य को प्रत्येक क्रिया से पहले समाप्त कर दूंगा, बेशक, कोड को प्रत्येक नियंत्रक में कॉपी करना।

उत्तर:

उत्तर № 1 के लिए 6

आप इसके लिए सेवाओं का उपयोग कर सकते हैं।

एक्मे / DemoBundle / MyService / MyService.php

<?php
namespace Acme/DemoBundle/MyService

class MyService {

public function myFunction(){
[...]
}

}

एक्मे / DemoBundle / संसाधन / config / services.yml

services:
my_service:
class: Acme/DemoBundle/MyService/MyService

या .xml संस्करण

एक्मे / DemoBundle / संसाधन / config / services.xml

<?xml version="1.0" encoding="utf-8" ?>
<container xmlns="http://symfony.com/schema/dic/services"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://symfony.com/schema/dic/services
http://symfony.com/schema/dic/services/services-1.0.xsd"
>
<services>
<service id="my_service" class="AcmeDemoBundleMyServiceMyService">

</service>
</services>
</container>

फिर एक नियंत्रक में

एक्मे / DemoBundle / नियंत्रक / MyController.php

$this->container->get("my_service")->myFunction();

इसे अपने सभी बंडलों में उपलब्ध कराने के लिए बस तदनुसार प्रत्येक बंडल की सेवाओं कॉन्फ़िगरेशन फ़ाइल को अपडेट करें।

दस्तावेज़ीकरण है यहां उपलब्ध है


संबंधित सवाल
सबसे लोकप्रिय