将图像链接到 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" />'))
结果是这样的:
<img src="http://laravel3.dev/assets/images/image.jpg" alt="icon" />
这将只是屏幕上的文本 - 没有图像。相反,您需要使用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','<img src="'.URL::base().'assets/images/image.jpg" alt="icon" />')) !!
吗?
@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 中的路线的主要内容,如果未能解决你的问题,请参考以下文章