DetailView에서 'value'에 함수 값을 지정하려고합니다. 하지만 내가 "클래스 개체를 문자열로 변환 할 수 없습니다."라는 오류가 발생했습니다.세부 정보보기에서 값 속성에 기능 할당 yii2
다른 변수에도 동일한 오류를 지정하여 함수의 값을 반환하려고했지만 동일한 오류가 발생했습니다.
제발 도와 주실 수 있습니까?
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'Task_ID',
'Task_Title',
'Description',
'projects.project_name', //display project name instead of project id
// 'Assign_task_to',
//'tasksemp.Employee_ID',
[
'attribute' => 'Assign_task_to',
'format' => 'raw',
$data = function ($model) {
$assignEmpModel = Tasksemp::find()->where(['Task_ID' => $model->Task_ID])->all(); //get all the rows with teh same task_id
$employes = ''; //empty string
foreach ($assignEmpModel as $employee) {
$emp = Employee::find()->where(['Employee_ID'=>$employee->Employee_ID])->one(); //get all the employee_id
$name = $emp['employee_name']; //get the employee_name from the employees table
$employes .= ' '.$name.', '; //concatenate the names.
}
// return implode(', ',$employes);
//return $employes;
},
'value' => $data,
],
'start_date',
'due_date',
'priotiy_level',
'upload_documents',
],
]) ?>
변수 $ 데이터에 함수를 할당했지만 시도하지 않았습니다.
필자는 함수를 값에 직접 할당하려고 시도했지만 동일한 오류가 발생했습니다.
[
'attribute' => 'Assign_task_to',
'format' => 'raw',
'value' => function ($model) { //<----- ERROR HERE!
$assignEmpModel = Tasksemp::find()->where(['Task_ID' => $model->Task_ID])->all(); //get all the rows with teh same task_id
$employes = ''; //empty string
foreach ($assignEmpModel as $employee) {
$emp = Employee::find()->where(['Employee_ID'=>$employee->Employee_ID])->one(); //get all the employee_id
$name = $emp['employee_name']; //get the employee_name from the employees table
$employes .= ' '.$name.', '; //concatenate the names.
}
return $employes;
},
],
이 같은 Bizley의 솔루션을 시도 :
<?php $assignEmpModel = Tasksemp::find()->where(['Task_ID' => $model->Task_ID])->all(); //get all the rows with teh same task_id
$employes = ''; //empty string
foreach ($assignEmpModel as $employee) {
$emp = Employee::find()->where(['Employee_ID'=>$employee->Employee_ID])->one(); //get all the employee_id
$name = $emp['employee_name']; //get the employee_name from the employees table
$employes .= ' '.$name.', '; //concatenate the names.
?>
<?= DetailView::widget([
'model' => $model,
'attributes' => [
'Task_ID',
'Task_Title',
'Description',
'projects.project_name', //display project name instead of project id
// 'Assign_task_to',
//'tasksemp.Employee_ID',
[
'attribute' => 'Assign_task_to',
'format' => 'raw',
'value' => $employes,
],
'start_date',
'due_date',
'priotiy_level',
'upload_documents',
],
]) ?>
을하지만 지금은 오류가 예기치 않은 파일의 끝은 말한다.
당신은 논리보기 ('$의 employees' 변수를 채우기 위해 SQL 쿼리를 만드는)를 넣으면 안됩니다, 그것은 모델이나 별도의 구성 요소에 대한 일이다. 보기는 표시 및 형식 지정 만 담당합니다. 이것은 MVC 원칙에 위배됩니다. – arogachev