回答:
Symfony 2.6およびそれ以前のバージョン、あなたが最初のコンテナを取得する必要があり、そして- - 、コントローラ内のパラメータを取得するために必要なパラメータを。
$this->container->getParameter('api_user');
このドキュメントの章で説明しています。
ながら、$this->get()
コントローラ内の方法は、サービス(ロードするドキュメントを)
Symfony 2.7以降のバージョンは、次を使用することができ、コントローラ内のパラメータを取得します:
$this->getParameter('api_user');
$this->getContainer()->getParameter('api_user');
と致命的なエラーが発生します。未定義のメソッド..Longpath .. \ Controller :: getContainer()を呼び出します。
$this->hasParameter()
まだ動作していません。
2017年とSymfony 3.3 + 3.4以降、セットアップと使用が簡単な、よりクリーンな方法があります。
コンテナーとサービス/パラメーターロケーターのアンチパターンを使用する代わりに、コンストラクターを介してクラスにパラメーターを渡すことができます。心配する必要はありません。時間のかかる作業ではなく、一度設定するだけでアプローチを忘れます。
2ステップで設定する方法は?
app/config/services.yml
# config.yml
# config.yml
parameters:
api_pass: 'secret_password'
api_user: 'my_name'
services:
_defaults:
autowire: true
bind:
$apiPass: '%api_pass%'
$apiUser: '%api_user%'
App\:
resource: ..
Controller
<?php declare(strict_types=1);
final class ApiController extends SymfonyController
{
/**
* @var string
*/
private $apiPass;
/**
* @var string
*/
private $apiUser;
public function __construct(string $apiPass, string $apiUser)
{
$this->apiPass = $apiPass;
$this->apiUser = $apiUser;
}
public function registerAction(): void
{
var_dump($this->apiPass); // "secret_password"
var_dump($this->apiUser); // "my_name"
}
}
古いアプローチを使用する場合は、Rectorを使用して自動化できます。
これは、サービスロケーターアプローチによるコンストラクターインジェクションと呼ばれます。
これについてもっと読むには、私の投稿How to Get Parameter in Symfony Controller the Clean Wayをチェックしてください。
(テスト済みで、新しいSymfonyメジャーバージョン(5、6 ...)に合わせて更新されています)。
Symfony 4では、以下を使用できますParameterBagInterface
:
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
class MessageGenerator
{
private $params;
public function __construct(ParameterBagInterface $params)
{
$this->params = $params;
}
public function someMethod()
{
$parameterValue = $this->params->get('parameter_name');
// ...
}
}
そしてでapp/config/services.yaml
:
parameters:
locale: 'en'
dir: '%kernel.project_dir%'
コントローラとフォームの両方のクラスで動作します。詳細については、Symfonyブログを参照してください。
$meetupApiKey
、私は少し良いよりも期待するものを知っている$parameterBag
以下を使用できます。
public function indexAction()
{
dump( $this->getParameter('api_user'));
}
詳細については、ドキュメントを読むことをお勧めします。
http://symfony.com/doc/2.8/service_container/parameters.html
symfony 4.3.1では私はこれを使います:
services.yaml
HTTP_USERNAME: 'admin'
HTTP_PASSWORD: 'password123'
FrontController.php
$username = $this->container->getParameter('HTTP_USERNAME');
$password = $this->container->getParameter('HTTP_PASSWORD');
$this->getParameter('foo')
。それがSF 4.8で機能させるために私がしたことです。
次のものも使用できます。
$container->getParameter('api_user');
http://symfony.com/doc/current/service_container/parameters.htmlにアクセスします
get
コントローラのメソッドもコンテナを使用しますが、パラメータではなくコンテナからのみサービスを取得できることに注意してください。getParameter
パラメータを取得する必要があります。