【问题标题】:Functions in controllers and blade - Laravel控制器和刀片中的功能 - Laravel
【发布时间】:2015-12-30 01:19:08
【问题描述】:

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

这就是我目前拥有的

一个函数和一个被我的route调用的函数都在我的webcontroller.php

// 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,它需要 $year 我已传递给 restaurant 视图。在我的footer.blade.php 我有这个

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

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


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

任何指导表示赞赏

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      所以我想通了。

      1. 无论是在主视图中还是在包含中使用,Laravel 都会添加变量
      2. 始终,始终确保您的函数return 有所作为。从问题中您可以看到我的function 使用echo

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

      【讨论】:

        猜你喜欢
        • 2017-04-10
        • 2021-09-26
        • 2012-12-10
        • 2018-07-06
        • 2019-02-06
        • 2017-10-17
        • 2016-07-13
        • 2019-05-07
        • 2021-04-17
        相关资源
        最近更新 更多