将对象传递到Laravel Blade中的自定义控件结构
我无法对传递给Laravel 4.1.23中自定义控件结构的对象调用成员函数 我的自定义控件结构:将对象传递到Laravel Blade中的自定义控件结构,laravel,blade,Laravel,Blade,我无法对传递给Laravel 4.1.23中自定义控件结构的对象调用成员函数 我的自定义控件结构: Blade::extend(function($view, $compiler){ $pattern = $compiler->createMatcher('paginatePretty'); $code = '$1<?php echo $2->getCurrentPage(); ?>'; retur
Blade::extend(function($view, $compiler){
$pattern = $compiler->createMatcher('paginatePretty');
$code =
'$1<?php
echo $2->getCurrentPage();
?>';
return preg_replace($pattern, $code, $view);
});
在编译时,我得到以下错误:
syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ';'
自定义控件结构的编译方式如下:
echo ($articles)->getCurrentPage();
如何将对象传递给自定义控件结构?使用list()
和array
解决以下问题:
Blade::extend(function($view, $compiler){
$pattern = $compiler->createMatcher('paginatePretty');
$code =
'$1<?php
#echo $2->getCurrentPage(); --> the bad code
list($_paginator) = array$2;
echo $_paginator->getCurrentPage();
?>';
return preg_replace($pattern, $code, $view);
});
Blade::extend(函数($view,$compiler){
$pattern=$compiler->createMatcher('paginatePretty');
$code=
'$1';
返回preg_replace($pattern,$code,$view);
});
在自定义控件结构中声明的变量前面加下划线,以避免视图中的冲突
Blade::extend(function($view, $compiler){
$pattern = $compiler->createMatcher('paginatePretty');
$code =
'$1<?php
#echo $2->getCurrentPage(); --> the bad code
list($_paginator) = array$2;
echo $_paginator->getCurrentPage();
?>';
return preg_replace($pattern, $code, $view);
});