2

我正在研究 laravel php 框架,我有一个简单的问题,在使用刀片模板引擎时,我通常使用 html 辅助函数来呈现表单、链接或其他任何东西。

现在,当我尝试添加指向特定路线的链接时,我通常会喜欢这样:

{{ HTML::link_to_route('author','TheAuthor')) }}

第一个参数采用路线,第二个参数采用将出现的字符串,为了使代码生成更简单:

<a href="ROUTE URL">TheAuthor</a>

现在我想用图像替换 TheAuthor,我该怎么办?

4

3 回答 3

11

或者你可以使用 {{route}}

前任:

<a href="{{route($route,$params)}}"><img src="'.$image.'" /></a>
于 2013-05-12T19:54:12.427 回答
3

我知道这不是您想听到的答案 - 但您不能通过 link_to_route 传递任何图像。

问题是 HTML 类的输出会自动转义。所以如果你试图通过这个:

{{ HTML::link_to_route('author','<img src="'.URL::base().'assets/images/image.jpg" alt="icon" />')) }}

结果是这样的:

&lt;img src=&quot;http://laravel3.dev/assets/images/image.jpg&quot; alt=&quot;icon&quot; /&gt;

这将只是屏幕上的文本 - 没有图像。相反,您需要自己使用URI::to_route('author')和生成链接。所以做一个这样的助手(未经测试):

function link_to_route_image($route, $image)
{
   $m = '<a href="'.URL::to_route($route).'">'
      . '<img>'.$image.'</img>'
      . '</a>';
   return $m;
}
于 2013-02-12T13:17:02.410 回答
1

如果你在所有地方都这样做可能会变得乏味,但在孤立的地方,处理这个问题的最佳方法实际上是将你的整个 link_to_* 方法调用包装在 HTML::decode 中。

{{ HTML::decode(HTML::link_to_route('author','<img src="{URL::base()}assets/images/image.jpg" alt="icon" />')) }}

您无法从函数内部执行任何操作(例如在解码中包装“标题”部分),因为清理是在函数调用中进行的,但如果您解码整个链接,它将正确呈现 html。

于 2014-01-29T09:56:33.247 回答