2017-07-28 8 views
0

私はDrupalの新人です。私はDrupal8でカスタムモジュールを作りたいと思います。 私はモジュールを開発しましたが、解決すべき問題がいくつかあります。モジュールはいつdrupalでレンダリングされますか?

モジュールを含むページがユーザーに表示されると、モジュールはGETパラメーター値を表示します。

たとえば、http://localhost/drupal/?keyword=bananaと接続し、モジュールには「banana」と表示されます。

しかし、上記の後、再びhttp://localhost/drupal/?keyword=appleと接続すると、モジュールには「バナナ」も表示されます。

つまり、モジュールを含むページが最初に表示され、2番目、3番目などのときに間違った動作をすると、モジュールはうまく動作します。

私はいくつかのモジュールをビルド()メソッドをテストし、モジュール内で一度しか呼び出されません。 私は、ページに接続して最初にレンダリングすることができないときにモジュールが1回だけレンダリングされると思います。

また、キャッシュに関連する問題かもしれないが、私はadmin/configuration/performance/cacheを "no-cache"に設定した。

"banana"がモジュールで表示された後に "apple"を表示することができるとは確信していません。

...

おかげで私を助けて、私は詳細をお知らせください。

+0

を取ります見てくださいhttps://www.drupal.org/node/2598914 – Fky

+0

あなたの世話をありがとう。私はdrupal8のモジュールでやっています。しかし、いくつかの問題があります。モジュールが正常に動作すれば、つまり開発が完了し、自分のサイトのキャッシュを設定したら、モジュールはどのように動作しますか?開発中と同じようにうまく動作することを確認できますか?私の問題はキャッシュに関連すると思いますので、開発中に問題を無効にすることをお勧めします。しかし、開発後にキャッシュを有効にする方法はありますか? – NewComer

+0

site:modeをdevelopmentに設定できません。私はdrupal console 1.0.0 alpha1とrc26をインストールしましたが、CommandNotFoundExceptionが発生しました。新しい、インストール、インポートなどの4つのモードしか利用できません:site:modeのローカルデバッグ。もう進行できません – NewComer

答えて

0

制約によっては、この特定のページのキャッシュを無効にする方法とルーティングワイルドカードを使用する方法があります。

あなたは、あなたのコントローラで、次のようにトリガーするページキャッシュキルスイッチサービスを、使用して、特定のページのキャッシュを無効にすることができます

\Drupal::service('page_cache_kill_switch')->trigger(); 

をこれはちょうどこの特定の要求のためにキャッシュを無効になりますので、古いコンテンツを見ることの効果は得られません。

可能であれば、GETパラメータの代わりにルーティングパラメータを使用する方がよい場合があります。これにより、別々のURL(たとえばpage/banana、page/appleなど)がキャッシュされ、必要なコンテンツが表示されます。たとえば、module.routing.ymlファイルに:

public function page($parameter) { 
    return ['#markup' => $parameter]; 
} 

詳細情報:

mymodule.route: 
    path: '/path/{parameter}' 
    defaults: 
    _controller: '\Drupal\mymodule\Controller\MyModuleController::page' 
    _title: 'My Module Page' 
    requirements: 
    _permission: 'access content' 

{パラメータ}パラメーターは、そのようにようにコントローラーにアクセスすることができるhttps://www.drupal.org/node/2186285

関連する問題