我无法在传递给Laravel 4.1.23中的自定义控件结构的对象上调用成员函数。
我的自定义控制结构:
Blade::extend(function($view, $compiler){
$pattern = $compiler->createMatcher('paginatePretty');
$code =
'$1<?php
echo $2->getCurrentPage();
?>';
return preg_replace($pattern, $code, $view);
});
我的刀片视图代码实例化paginatePretty:
// $articles = Articles::orderBy('created_at', 'desc')->paginate($per_page);
@paginatePretty($articles)
在编译时,我收到此错误:
syntax error, unexpected '->' (T_OBJECT_OPERATOR), expecting ',' or ';'
自定义控件结构编译如下:
echo ($articles)->getCurrentPage();
如何将对象传递给自定义控件结构?
答案 0 :(得分:0)
使用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);
});
我在自定义控件结构中声明的变量前缀为下划线,以避免视图中的冲突。