将图像链接到 Laravel 中的路线

Posted

技术标签:

【中文标题】将图像链接到 Laravel 中的路线【英文标题】:Linking images to routes in Laravel 【发布时间】:2013-01-27 18:30:48 【问题描述】:

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

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

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

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

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

现在我想用图片替换 TheAuthor , 我能做什么?

【问题讨论】:

【参考方案1】:

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

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

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

结果是这样的:

&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;

【讨论】:

谢谢@theshiftexchange :) 其实是HTML::linkRoute() 你不能用!! HTML::link_to_route('author','&lt;img src="'.URL::base().'assets/images/image.jpg" alt="icon" /&gt;')) !! 吗? @MarcBrillault - 不,因为它是函数 link_to_route() 本身进行转义。另外 - 上面使用 的代码是旧的 Laravel 4 输出,其中 未转义(不像 L5,它是相反的) 其他框架的用户会因为这个遗漏而畏缩。在链接中包装图像是一项常见的任务。例如,CakePHP 有一个参数 'escape'=>false,您可以将其传递给它,它等效于 link_to_route(),它允许您将图标或图像作为链接的标题传递。【参考方案2】:

或者你可以使用 route

例如:

<a href="route($route,$params)"><img src="'.$image.'" /></a>

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

以上是关于将图像链接到 Laravel 中的路线的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Laravel 中的文件直接上传到公用文件夹?

如何将路线返回到laravel中的视图

共享主机中的 Laravel 存储链接

如何从 laravel 中的某个路由页面检索图像或文件?

Laravel 模板显示路线中的两个刀片模板

从资源文件夹中获取图像 - Laravel