我慢慢开始掌握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 © {{ $year }} | xxx.com Limited</p>
现在,我假设当我将数据传递给restaurant
并且footer
包含在restaurant
中时,当数据包含在restaurant
中时,数据将应用于footer
,但这并没有发生。
经过大量测试,我现在发现我的函数根本不产生任何数据。这并不是因为该功能不起作用,也是因为在正常的PHP
中它会进行
任何对的指导都表示赞赏
尝试将$year从restaurant.blade传递到footer.blade
@include('includes.footer', ['year'=>$year])
所以我想明白了。
- Laravel将添加变量,无论它是在主视图中使用还是在include中使用
- 始终,始终确保您的函数
return
有所不同。从问题中可以看出,我的function
使用了echo
希望这对将来的人有所帮助。