には、「コントローラー」のすべてのコントローラーの前に起動する「メイン」コントローラーがありますか?私は、すべてのユーザーが自分の別のサイトの言語を持つプロジェクトを持っているので、私は最初の設定を確認してから使用して言語を設定したい:今、私は私が持っているすべてのコントローラでこれを行うYii Frameworkのすべてのコントローラーの前にアクション
Yii::$app->language='en-EN';
を、私はそれを推測します簡単なオプションにする必要があります。
には、「コントローラー」のすべてのコントローラーの前に起動する「メイン」コントローラーがありますか?私は、すべてのユーザーが自分の別のサイトの言語を持つプロジェクトを持っているので、私は最初の設定を確認してから使用して言語を設定したい:今、私は私が持っているすべてのコントローラでこれを行うYii Frameworkのすべてのコントローラーの前にアクション
Yii::$app->language='en-EN';
を、私はそれを推測します簡単なオプションにする必要があります。
前に同じ問題があり、別のコンポーネントを追加して解決策を見つけました。
How to load class at every page load in advanced app
部品の一部に設定してクラスを追加し、ブートストラップに追加することにより、起動時にそれをロードします。
config.phpの
$config = [
// ..
'components' => [
'InitRoutines' => [
'class' => 'app\commands\InitRoutines', // my custom class
],
],
];
$config['bootstrap'][] = 'InitRoutines';
次に、あなたのクラスがinit()
メソッド
でComponent
を拡張するために作るInitRoutines.php
namespace app\commands;
use Yii;
use yii\base\Component;
use app\commands\AppHelper;
use app\commands\Access;
class InitRoutines extends Component
{
// this method runs at start at every page load
public function init()
{
parent::init();
Access::checkForMaintenance(); // my custom method
Yii::$app->language = AppHelper::getUserLanguageCode(); // my custom method
}
}
いいですね!ありがとう。 – The50
あなたは、アプリケーションイベントにアタッチすることができますbeforeActionまたはbeforeRequestここにあなたのものをしてください。例:
$config = [
// ..
'on beforeRequest' => function($event) {
Yii::$app->language='en-EN';
}
];
設定ファイル 'config/main.php'を確認しましたか? –
はい、私は恐れているモデルのいずれにも届きません。私はYii :: $ app-> user-> identity-> user_langを使用しようとしている間に「非オブジェクトのプロパティを取得しようとしています」というエラーが表示されます。 – The50