代码之家  ›  专栏  ›  技术社区  ›  Ken

Cakephp 3:视图。ctp两个变量之和

  •  0
  • Ken  · 技术社区  · 7 年前

    我有一个视图显示了相关的收入阵列。我在控制器中创建了一个集合,以隔离需要添加在一起并显示为货币的两个变量。

    public function view($id = null)
        {
            $annualOperatingBudget = $this->AnnualOperatingBudgets->get($id, [
                'contain' => ['Azinstitutions', 'BudgetExpenses', 'BudgetExpenses.ExpenseTitles', 'BudgetRevenues', 'BudgetRevenues.RevenueTitles']
            ]);
            $collection = new Collection($annualOperatingBudget->budget_revenues);
            $revenuesGroup1 = $collection->match(['revenue_title.revenue_group' => 1 ]);
            $revenuesGroup2 = $collection->match(['revenue_title.revenue_group' => 2 ]);
            $tuitionAndFees = $collection->match(['revenue_title.revenue_title' => 'Tuition and Fees']);
            $lessScholarshipAllowance = $collection->match(['revenue_title.revenue_title' => '- less Scholarship Allowance']);
    
            $this->set(compact('annualOperatingBudget', $annualOperatingBudget,'revenuesGroup1', 'revenuesGroup2', 'tuitionAndFees', 'lessScholarshipAllowance')); 
        }
    

    我可以使用调试工具包查看变量:

    annualOperatingBudget (array)
    revenuesGroup1 (array)
    revenuesGroup2 (array)
    tuitionAndFees (array)
      4 (App\Model\Entity\BudgetRevenue)
         id 5
         annual_operating_budget_id 1
         revenue 1278
         revenue_title_id 5
         revenue_title (array)
    lessScholarshipAllowance (array)
       5 (App\Model\Entity\BudgetRevenue)
         id 6
         annual_operating_budget_id 1
         revenue -257
         revenue_title_id 6
         revenue_title (array)
    

    我想把这两个‘收入’加在一起

    我试过:

    <?= $this->Number->currency(
         ($tuitionAndFees->revenue) + ($lessScholarShipAllowance->revenue), 
        'USD', ['places' => 1]) 
    ?>
    

    但我有几个错误:

    Notice (8): Undefined property: Cake\Collection\Iterator\FilterIterator::$revenue [ROOT\plugins\Twit\src\Template\AnnualOperatingBudgets\view.ctp, line 49]
    Notice (8): Undefined variable: lessScholarShipAllowance [ROOT\plugins\Twit\src\Template\AnnualOperatingBudgets\view.ctp, line 49]
    Notice (8): Trying to get property of non-object [ROOT\plugins\Twit\src\Template\AnnualOperatingBudgets\view.ctp, line 49]
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Syan Souza    7 年前

    在尝试获取收入属性之前,您必须重复使用$TutionandFees和$LessCholarshipAssociation。类似这样:

    foreach($tuitionAndFees as $tuitionAndFee){
        echo $tuitionAndFee->revenue
    }
    
        2
  •  1
  •   Greg Schmidt    7 年前

    如果视图中所需的只是所有学费和费用的总和,则可以使用

    $tuitionAndFees = $collection
        ->match(['revenue_title.revenue_title' => 'Tuition and Fees'])
        ->sumOf('revenue');
    

    这将只返回匹配项的总和。做类似的事情 $lessScholarShipAllowance ,然后在您看来

    $this->Number->currency($tuitionAndFees + $lessScholarShipAllowance,
        'USD', ['places' => 1])