在视图编写器中检索视图数据


Retrieving view data in a view composer

如果我在这个视图编辑器中做以下操作:

View::composer('product.edit', function($view)
{
    $viewdata = $view->getData();
    dd($viewdata);
});

我可以在输出中看到存在'language_id',但我不知道如何检索它,因为$viewdata['language_id']将抛出异常。

我该怎么做呢?

更新:

接受的答案让我发现,当演示者参与此操作时,模型将在偏移中可用,以下是最终代码:

View::composer('product.edit', function($view)
{
    $data = $view->offsetGet('product')->toArray();
    echo $data['language_id'];
    exit;
});

你可以试试:

$language_id = $view->offsetGet('language_id');

以下公共方法在$view对象(Illuminate'View'View的一个实例)中可用

0 => string '__construct' (length=11)
1 => string 'render' (length=6)
2 => string 'renderSections' (length=14)
3 => string 'with' (length=4)
4 => string 'nest' (length=4)
5 => string 'withErrors' (length=10)
6 => string 'getEnvironment' (length=14)
7 => string 'getEngine' (length=9)
8 => string 'getName' (length=7)
9 => string 'getData' (length=7)
10 => string 'getPath' (length=7)
11 => string 'setPath' (length=7)
12 => string 'offsetExists' (length=12) 
13 => string 'offsetGet' (length=9)
14 => string 'offsetSet' (length=9)
15 => string 'offsetUnset' (length=11)
16 => string '__get' (length=5)
17 => string '__set' (length=5)
18 => string '__isset' (length=7)
19 => string '__unset' (length=7)
20 => string '__call' (length=6)
21 => string '__toString' (length=10)

你也可以尝试这样做:

if($view->offsetExists('language_id')) {
    $language_id = $view->offsetGet('language_id');
}

值得注意的是,你也可以使用属性语法访问视图数据(至少从Laravel 8开始):

$languageId = $view->product->language_id ?? null;