0

Html-> link()メソッドが嫌いです。ありがたいのですが、コードが醜くなり、それほど基本的なものにメソッドが必要になるとは思いません。しかし、私のプロジェクトでは、適切なURLが必要な場合は、それを使用する必要があります。私はそれを受け入れますが、この(大規模な)プロジェクトでリンクを作成し続ける前に、私がしなければならないことを知りたいです。

ビューでcakeURLを取得する方法をいくつか見つけようとしました。何もうまくいきませんでした。

私の目標はこれから行くことです:

<?=$this->Html->link('quality view', array('controller' => 'quals', 'action' => 'show')); ?>

これに:

<a href="<?=URL.'quals/show'?>">

しかし、ページのURLを変更した場合、そのような定数を機能させる方法を記述したり見つけたりすることはできません。(/ quals/や/qualsにアクセスするなどでも異なるURLが表示されます)

4

2 に答える 2

2

linkメソッドも嫌いです。class、id、target ="_blank"などの属性をリンクに追加するのはやり過ぎだと思います。

私はリンクのためにこれを行います:

<a class="myclass" href="<?php echo $this->Html->url(array('controller'=>'my_controller','action'=>'my_action','plugin'=>false)); ?>">My Anchor Text</a>

そのため、URLを取得するためにHTMLヘルパーを使用しますが、自分でコーディングするhtml要素を使用します。URLをハードコーディングするのではなく、そのようにすることをお勧めします。これはCakeの方法であり、routes.phpに組み込まれているCakeのルーティング機能を最大限に活用し、複数の場所でハードコーディングしたり覚えたりすることなく、きれいなルートを作成できます。

また、将来、他の人があなたのコードを見るのも簡単になります。ハードコードされた「quals/show」リンクは、Webルートのquals / showディレクトリを参照していますか?それとも、qualsコントローラーのshowアクションを指しますか?(そして、プラグインを使い始めたときだけ、より複雑になります)。htmlヘルパーを使用してURLを作成すると、すべてがすぐにわかります。

見栄えを良くしたい場合は、次のように2行に分割できます。

<?php $url = $this->Html->url(array('controller'=>'my_controller','action'=>'my_action','plugin'=>false)); ?>
<a class="myclass" href="<?php echo $url; ?>" >My Anchor Text</a>

大規模なプロジェクトがある場合は、URLにCakeのヘルパーを使用する理由がさらにあります。今は良い考えのように思えるかもしれませんが、それらをハードコーディングすると、将来のある時点で大きな頭痛の種になります。

于 2013-01-31T05:41:16.260 に答える
1

実際には、使用に関して非常に深刻な考慮事項がありますHtmlHelper::link()

リンクの構築にHtmlHelperを使用している場合:

  • アプリケーション内のすべてのルートを定義するための1つの中央プレースがあります。URL構造は、で定義されているものと常に同じになりConfig/routes.phpます。何かを変更すると、サイト内のすべてのリンクにこれらの変更が自動的に反映されます
  • 逆ルーティング
  • 簡単なアプリケーションメンテナンス
  • SEO/サイトマッピング

したがって、これを使用すると、アプリケーションの構造を小さな変更で変更できるようになります。そうでない場合、1つのリンクを変更すると、使用されているすべての場所を調べて手動で変更する必要があります。

@ joshua.palingが言ったように、URLをハードコーディングすることは、構造を変更すると多くの頭痛の種になるため、お勧めできません。HtmlHelperのlink()および/またはurl()メソッドを使用するのが最善です。

于 2013-01-31T10:44:04.457 に答える