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

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

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

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

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

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

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

【问题讨论】:

    标签: html routes hyperlink laravel helpers


    【解决方案1】:

    我知道这不是您想听到的答案 - 但您不能通过 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;
    }
    

    【讨论】:

    • 谢谢@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" alt="icon" />')) }}
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-06
        • 2021-07-23
        • 2013-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-23
        相关资源
        最近更新 更多