【问题标题】:Laravel: URL in stringLaravel:字符串中的 URL
【发布时间】:2015-02-11 00:57:32
【问题描述】:

我想在我的 Laravel (blade) 视图中打印一个按钮。我已经创建了一个用于创建此按钮的函数,因为:如果加载视图的用户无权查看此按钮,则该按钮将不会显示(我还没有制作这部分)。在每个需要按钮的视图中,我都想使用这种方法。该方法的返回值为:

<a href="{{ URL::to(scholen/toevoegen) }}"><button class="btn btn-primary">Nieuwe school</button></a>

只是有一个问题:createButton() 方法返回一个字符串。所以,{{ URL::to('scholen/toevoegen') }} 在刀片中不起作用。

有解决办法吗?我不想在我的方法中输入 url,因为它必须是可变的。

查看

<?= Authorize::createButton('Nieuwe school', array('scholen', 'toevoegen'), null, 'btn btn-primary'); ?>

助手类

static function createButton($text = null, $route = null, $id = null, $class = null)
{

        $button = '<a href="{{ URL::to(<!URL!>) }}"><button class="<!CLASS!>"><!TEXT!></button></a>';

        if ($text != null) {
            $button = str_replace("<!TEXT!>", $text, $button);
        } 

        if ($route[0] != null && $route[1] != null) {
            $button = str_replace("<!URL!>", $route[0] .'/'. $route[1] . ($id != null ? '/'. $id : ''), $button);
        } 

        if ($class != null) {
            $button = str_replace("<!CLASS!>", $class, $button);
        }

        return $button;
}

【问题讨论】:

    标签: laravel routes blade


    【解决方案1】:

    我建议在 createButton() 方法中评估路由变量,而不是在 Blade 中 - 像这样:

    $button = '<a href="' . URL::to($someConstructedRoute) . '"><button class="<!CLASS!>"><!TEXT!></button></a>';
    

    现在,我们只需要在该代码之上创建构造路线。

    但是,我也认为您的方法还有很大的改进空间,例如sprintf()。似乎路线永远不应该是空的,因为你总是想要一个真正的链接。这是我如何更改它的示例 - 但这只是一个建议。

    static function createButton($routeVars, $text = '', $id = null, $class = '')
    {
        $route = implode('/', $routeVars);
        if ($id) $route .= '/' . $id;
        $url = URL::to($route);
    
        return sprintf('<a href="%s"><button class="%s">%s</button></a>', 
            $url, $class, $text
        );
    }
    

    通过将空值更改为空字符串,我们可以按原样包含它们。例如,如果没有提供文本,按钮将看起来像 &lt;a href="somelink"&gt;&lt;button class="someclass"&gt;&lt;/button&gt;&lt;/a&gt; 没有文本。

    实际上,我可能也会将三个路由创建提取到一个静态方法,但这可能有点挑剔。

    希望这会有所帮助。 :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-17
      • 1970-01-01
      • 2014-03-05
      • 2020-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      相关资源
      最近更新 更多