【问题标题】:Laravel 4, passing calculations from a table to a viewLaravel 4,将计算从表传递到视图
【发布时间】:2014-04-10 22:08:38
【问题描述】:

我有一张包含大量数字数据的表格。我有一个名为 stats.blade.php 的视图,我想“按原样”使用表中的数据

这里是 route.php

Route::get('stats', 'StatController@stats');

这里是控制器:

public function stats()
{
    $title = "Stats";
    $stats = DB::table('stat_data')->get();
    return View::make('stats')->with('stats', $stats)->with('title',$title);
}

我了解这个简单的过程,并且能够在统计视图中使用表格中的数据。但是,我还想操纵表中的数据来创建新的 php 变量以在统计视图中使用。我在应用程序中创建了一个名为计算的目录,其中有几个文件可以从这个“stat_data”表中进行一些计算。我正在使用 laravel4 重新设计这个网站,所以在我刚刚在页面上调用 require_once"path_to_file" 之前,我想使用新的计算变量。

我的问题是将在 app/calculations/files.php 中完成的计算变量从 stats_table 传递到 stats 视图的最佳方法是什么?

【问题讨论】:

    标签: laravel laravel-4 views


    【解决方案1】:

    根据 MVC 模式,您的视图不应该做太多事情,计算是他们不应该做的事情之一,因为如果您需要在任何其他地方使用这些计算,您将不得不复制它们并那么您将拥有可能不同的重复代码。

    您应该做的是创建一个类来处理您的计算并生成要在您的视图中使用的数组:

    public function stats()
    {
        $title = "Stats";
    
        $stats = DB::table('stat_data')->get();
    
        $stats = new \Calculations\CalculateData($stats);
    
        return View::make('stats')->with('stats', $stats)->with('title',$title);
    }
    

    使用 PSR-4 和命名空间的最佳方式,例如:Calculations

    将命名空间添加到指向命名空间类所在文件夹的 composer.json:

    "psr-4": {
        "Calculations\\": "app/calculations"
    },
    

    中创建类类'CalculateData'
    app/calculations/CalculateData.php
    

    将此作为基本代码:

    <?php namespace Calculations;
    
    class CalculateData() {
    
    }
    

    执行

    composer dump-autoload
    

    一旦 composer 构建您的自动加载 psr4 命名空间,您就可以开始了。如果您在同一个命名空间内创建新类,则不必再次运行它。

    【讨论】:

    • 我现在已经能够执行上面的代码了。但是,我无法将 $stats (又名 table('stat_data') )传递给计算文件,因此我可以遍历表并执行计算。我试图将表格传递给计算文件中的函数,但没有成功。
    • 如果您不向我们展示您的完整代码,或者至少是其中的一部分,这很难提供帮助,这是一个猜谜游戏......
    • 这个答案让我开始朝着更好的方向前进。我已将这个问题改写为我认为更清晰的帖子,代码更好here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    相关资源
    最近更新 更多