2017-04-26 24 views
0

AkeebaのReleasemakerを実行して、リリース/項目の言語をAll (*)に設定しようとしています。しかし、この種の問題は、Siteフィールドのコードを使用してデータベースフィールドlanguageを設定しようとするあらゆる種類のコードで発生するはずです。Joomla言語フィルタプラグインとフロントエンドの言語フィールドを変更する

多言語サイトをお持ちの場合は、おそらくプラグイン "システム - 言語フィルタ"が動作している可能性があります。このプラグインは、$_REQUEST['language']の値を特定の言語に設定します。毎回。結果として$data = $app->input->getData()のようなコードは、$_POST配列の値ではなく、$_REQUESTという値の言語値を取得するので、通常の->bind($data)操作でその言語フィールドを設定することはできません。

この問題も発生しましたか?これに対するあなたの解決策は何ですか?

答えて

0

私は自分のための解決策を得ました。私は実際にこれを解決する2つの方法をイメージングすることができます。一方では、クライアントからサーバーに転送されるlanguageパラメータの名前を変更して、永続レイヤー内の魔法のことを行うことができます。一方、言語フィルタープラグインの作業を修正しようとすることができます。私は、コンポーネントを変更したくないので、私は2番目の道を選んだと私はそれを必要と*に要求における言語の値をリセットするためにプラグインシステムを追加しました。もちろん、POSTデータからその値を読み取ることもできます。プラグインはできるだけ厳密に他のものをクラッシュさせないためにその魔法を行うべきです。

class PlgSystemLanguagefixer extends JPlugin 
{ 

    public function onAfterRoute() { 
     // Get the application object. 
     $app = JFactory::getApplication(); 

     $option = $app->input->get('option'); 
     $format = $app->input->get('format'); 
     $task = $app->input->get('task'); 
     $view = $app->input->get('view'); 

     if ($option == 'com_ars' && $task=='save' && $format == 'json' && ($view=='releases' || $view='items')) { 
      $app->input->set('language', '*'); 
     } 


    } 
} 

この質問はまだ

:)より良い答えをオープンしています
関連する問題