控制器和刀片中的功能-Laravel



我慢慢开始掌握Laravel,但在做基本的事情时总是遇到一些小问题。

这就是我现在拥有的

webcontroller.php 中的函数和route调用的函数

// Function for printing out copyright year
function copyright_info($begin_year = NULL)
{
    date_default_timezone_set('Europe/London');
    if(empty($begin_year) || $begin_year == date('Y'))
        echo date('Y');
    else
        echo $begin_year." - ".date('Y');    
}
// function being called by route.php to get Restaurant Page
public function restaurant () {
    $cookie = Cookie::get("basket");
    return view('pages.restaurant', ['basket' => $cookie]);
}

现在,第一个函数所做的就是在提供年份后打印出类似2013-2015的内容。

所以我应该可以做一些类似的事情

public function restaurant () {
    // use the function and get copyright year
    $year = copyright_info('2013')
    $cookie = Cookie::get("basket");
    // pass data to the view including the year we just created
    return view('pages.restaurant', ['basket' => $cookie, 'year' => $year]);
}

现在,在我的restaurant.blade.php文件中,我将页脚包含在includes文件夹中,该文件夹对我的所有页面(如@include('includes.footer'))都是通用的。现在页脚实际上包含一个div,它需要我传递给restaurant视图的$year。在我的footer.blade.php中,我有这个

<p style="font-size: 0.9rem">Copyright &copy; {{ $year }}  &#124;  xxx.com Limited</p>

现在,我假设当我将数据传递给restaurant并且footer包含在restaurant中时,当数据包含在restaurant中时,数据将应用于footer,但这并没有发生。


经过大量测试,我现在发现我的函数根本不产生任何数据。这并不是因为该功能不起作用,也是因为在正常的PHP中它会进行

任何对的指导都表示赞赏

尝试将$year从restaurant.blade传递到footer.blade

@include('includes.footer', ['year'=>$year])

所以我想明白了。

  1. Laravel将添加变量,无论它是在主视图中使用还是在include中使用
  2. 始终,始终确保您的函数return有所不同。从问题中可以看出,我的function使用了echo

希望这对将来的人有所帮助。

最新更新