2017-11-03 6 views
0

私はCakePHPでこれまで作業したことがなく、ユーザをページの先頭に戻すボタンを追加する必要があります。私の質問は、どのようにフレームワークを使用して、複数のページではなく、すべてのページでこれを行うことができますか?CakePHP - 複数のページに「back to top」ボタンを追加する

私はそれを理解できず、これに対する迅速な解決策が必要でした。どんな助けもありがとう!

+0

私は、これは 'CakePhp'とは関係ありませんと思います!これは 'html'と' javascript'を使って嘲ることができます。これを試してみてください:https://www.w3schools.com/howto/howto_js_scroll_to_top.asp –

+0

これは複数のページではできませんが、どのページではできませんか? –

+0

プロジェクトの一部のページにのみボタンが必要で、すべてではありません。 – cheesycoder

答えて

0

これについて多くの方法があります。

$this->set('backToTop',true); 

がある場合:あなたは、ディスプレイへの一番上のボタンにバックをしたいコントローラのアクションで次に

<?php if (!empty($backToTop)) : ?> 
    <!-- html & JS back to top code here--> 
<?php endif; ?> 

:最も簡単なのは、簡単な条件であなたdefault.ctpに(またはいずれか)のレイアウトを編集しています「back to top」スクリプトを使用しないという例外を除いて、コードを除外する条件を設定することができます。

+0

コントローラーはこの純粋なビューロジックを決定するべきではなく、MVCの考え方を破ります。 – burzum

+0

これはむしろ「MVCのアイデア」です... MVCパターン自体はまったく矛盾しません。コントローラはビ​​ューが消費する(またはしない)ようにvarを設定します。私が言ったように、これについては多くの方法がありました.Cakeで@cheesycodeが新しくなったということを考えると、最も単純で実用的なアプローチになりました –

+0

コントローラからvarを設定しました。これはビューのコンテキストでのみ関連します。 *ビューに関連する*のみ*を制御します。コントローラーは気にしませんし、何のためにもこのvarを全く使用しません。このようにしたい場合は、 'App \ View \ AppView'のinitialize()'メソッドで設定しますが、明らかにコントローラには設定しません。 varは、特定のビューファイル内で必要に応じてオーバーライドすることもできます。 – burzum

0

ボタンをレンダリングするアプリケーション用の汎用ユーティリティヘルパーでヘルパーまたはメソッドを作成します必要な場所に含めることができる要素を使用してください。

すべてのページで呼び出す場合は、ヘルパーまたは要素の呼び出しをレイアウトファイルに入れます。

特定のページで例外が必要な場合は、そのロジックをヘルパーメソッドまたは要素に入れ、ビューにアタッチされたリクエストオブジェクトが目的のコントローラとアクションと一致するかどうかを確認します。

公式ドキュメント:

関連する問題