2016-05-04 2 views
1

Как метод директивы принимает только $ expression, есть ли пример о том, как передать несколько аргументов, не используя explode?Как передать несколько аргументов пользовательскому клику?

Я пробовал:

Blade::directive('reportLink', function($expression, $expression2) { 

И потом:

@reportLink("a", "b") 

Но я получил сообщение об ошибке, отсутствует аргумент 2 ..

ответ

1

наткнулся на это сам. Единственный способ сделать это - сделать массив.

В шаблоне лезвия:

@reportLink([$argument1, $argument1]) 
    --stuff-- 
@endreportLink 

В поставщика услуг:

Blade::directive('reportLink', function ($expression) { 
    return "<?php App\ReportLink::YourMethod{$expression} ?>"; 
}); 

В своем классе:

class ReportLink 
{ 
    public static function YourMethod($arguments) 
    { 
     dd($arguments); // this is now an array. 
    } 
} 

Может быть, вы нашли это себя уже, но для будущей ссылки если люди ищут это.

+0

* «для дальнейшего использования, если люди ищут это» * Как мне! :-) Надеюсь, что в какой-то момент в будущем Laravel будет рассматривать '$ expression' как правильную переменную. – Pete

1

Вы можете использовать запятую sepreted аргументы как этот

@reportLink($argument1, $argument1) 
--stuff-- 
@endreportLink 

Вы должны просто взорвать строку в директиве

Blade::directive('reportLink', function ($expression) { 

    $expression = explode(',', $expression); 

    return "<?php echo $expression[0].' '.$expression[1] ?>"; 
});