2016-07-12 120 views
-2

这里,我试图设计一个工资单。我想从文本旁边的模型传递数据。像 -如何将数据从模型传递到yii2中的视图

<p class="text-center">Pay Slip for the month of </p> 

数据将从模型中提取,并会在“月份付款单”旁边传递。请帮忙。

我的控制器动作

public function actionPrintsalarystatement($id) { 

     //$model = Salary::find()->where(['s_id' => $id]); 
     $model = $this->findModel($id); 
     $searchModel = new SalarySearch(); 
     $dataProvider = $searchModel->search(Yii::$app->request->queryParams); 
     $data   = Salary::findOne($id); 
     $content = $this->renderPartial('_printSalarystatement', ['model' => $model,'dataProvider' => $dataProvider,'searchModel' => $searchModel,'data'=> $data]); 
     $pdf = new Pdf([ 
      'mode'=> Pdf::MODE_UTF8, 
      'format'=> Pdf::FORMAT_A4, 
      'destination'=> Pdf::DEST_BROWSER, 
      //'destination' => Pdf::DEST_DOWNLOAD, 
      'cssFile' => '@vendor/kartik-v/yii2-mpdf/assets/kv-mpdf-bootstrap.min.css', 
      // any css to be embedded if required 
      'cssInline' => '.kv-heading-1{font-size:18px}', 
      // set mPDF properties on the fly 
      'options' => ['title' => 'Print Payslip'], 
      // call mPDF methods on the fly 
      'methods' => [ 
       'SetHeader'=>['Private and Confidential'], 
       'SetFooter'=>['This Payslip is computer generated.'], 
      ], 
      'content'  => $content, 


     ]); 
     return $pdf->render(); 
     //return $this->render('_printSalarystatement', ['period' => 's_period']); 
    } 

_printSalarystatement.php

<?php 

use yii\helpers\Html; 
use yii\widgets\DetailView; 

/* @var $this yii\web\View */ 
/* @var $model frontend\modules\salary\models\Salary */ 
//@var $model yii\base\Model 
//@var $totaldays any 

//$this->title = $model->s_id; 
$this->params['breadcrumbs'][] = ['label' => 'Salaries', 'url' => ['index']]; 
$this->params['breadcrumbs'][] = $this->title; 
?> 
<div class="salary-view"> 

    <h1><?= Html::encode($this->title) ?></h1> 
    <h1><strong><p class="text-center">PS Enterprise</p></strong></h1> 
    <p class="text-center">Pay Slip for the month of s_period </p> 


    <?= DetailView::widget([ 
     'model' => $model, 
     'attributes' => [ 
      's_id', 
      's_date', 
      's_period', 
      's_empid', 
      's_empname', 
      's_workingdays', 
      's_leave', 
      's_holiday', 
      's_wageperday', 
      's_totalwage', 
      's_ovthour', 
      's_ovtrateperhour', 
      's_ovtamount', 
      's_tiffinworkingday', 
      's_tiffinrateperday', 
      's_wdtiffinamount', 
      's_sundayworked', 
      's_sundayrate', 
      's_sundaytiffinamount', 
      's_nightcount', 
      's_nightallrate', 
      's_nightallowance', 
      's_convday', 
      's_convrate', 
      's_conveyanceamount', 
      's_tiffinovtcount', 
      's_tiffinovtrate', 
      's_tiffinovtamount', 
      's_incentivecount', 
      's_incentiverate', 
      's_incentive', 
      's_totalearning', 
      's_epf', 
      's_esi', 
      's_ptax', 
      's_takehome', 
     ], 
    ]) ?> 

</div> 

通过控制器动作,我得到了下面的屏幕 enter image description here

我想是要传递一个在周期详细视图将显示在“该月的付款单”行后面。我的问题是如何做到这一点

回答

0

您需要将数据从controlleraction传递到您正在渲染的view

e.g让你想从索引操作发送$name变量查看

行动会像

public function actionIndex() 
    { 
     return $this->render('index', ['name' => 'Tanmay']); 
    } 

现在你在render函数的第二个参数传递的数组是你的变量列表的希望。所有的键将作为索引视图

变量被处理为索引视图的代码将是

<h1>Welcome <?= $name; ?> 

['name' => 'Tanmay']将被转换为$name具有值'Tanmay'

希望这有助于。 谢谢。

根据更新的问题更新时间:

$content = $this->renderPartial('_printSalarystatement', [ 
'model' => $model, 
'dataProvider' => $dataProvider, 
'searchModel' => $searchModel, 
'data'=> $data, 
's_period' => $s_period // new variable added 
] 
); 

在控制器

鉴于:

<p class="text-center">Pay Slip for the month of <?= $s_period; ?> </p> 
+0

未知你好,我想你的解决方案,但它结束了未定义的变量。我将添加我的控制器操作和查看文件以清除它。请让我知道该怎么做。 – Tanmay

+0

感谢您更新问题,还添加了什么错误,你越来越 –

+0

我已经添加了我目前的位置,我想在问题中做什么。 – Tanmay

相关问题