[英]Get value data in multiple table in form yii2
我的項目有問題。 在詢問之前,我想先向您介紹有關我的數據庫和邏輯程序的具體信息。
我有3個表,這些表是anak_asuh(主鍵kode_anak_asuh,外鍵kode_calon),calon(主鍵kode_calon)和perkembangan(主鍵tanggal,外鍵kode_anak_asuh)。 表calon與anak_asuh的關系是一對一的,而表anak_asuh與perkembangan的關系是一對多的。
然后,我創建了要保存在perkembangan表中的表格。 但是當我使用dropdownlist在表calon中獲得名稱calon值時,我遇到了問題。
問題是如何通過一張表獲取價值數據? 詳細說明我的問題是何時在表calon中獲得值名稱calon,但在通過表anak_asuh之前獲得值名稱。 我做不到,請舉個例子。
鑒於:
<?php
use yii\helpers\Html;
use yii\bootstrap\ActiveForm;
use yii\widgets\Pjax;
use yii\bootstrap\Modal;
use yii\helpers\Url;
use yii\db\ActiveRecord;
use yii\helpers\ArrayHelper;
use kartik\widgets\Select2;
use yii\jui\AutoComplete;
use yii\web\JsExpression;
use app\models\Calon;
use app\models\Perkembangan;
use app\models\AnakAsuh;
use kartik\widgets\DatePicker;
$this->title = 'Form Perkembangan Anak Asuh';
?>
<h1 align="center">Entry Perkembangan Anak Asuh</h2>
<?php
echo " ";
echo " ";
?>
<?php $form = ActiveForm::begin([
'layout' => 'horizontal',
'id' => 'create-form',
'fieldConfig' => [
'template' => "{label}\n{beginWrapper}\n{input}\n{hint}\n{error}\n{endWrapper}",
'horizontalCssClasses' => [
'label' => 'col-sm-4',
'offset' => 'col-sm-offset-4',
'wrapper' => 'col-sm-8',
'error' => '',
'hint' => '',
'button' => 'col-sm-4'
],
],
]);
?>
<div class="panel panel-default">
<div class="panel-heading"><b><h4 align="center">Form Perkembangan Anak Asuh</h4></b></div>
<?php if (Yii::$app->session->hasFlash('success')): ?>
<div class="alert alert-success alert-dismissable">
<button aria-hidden="true" data-dismiss="alert" class="close" type="button">×</button>
<h4><i class="icon fa fa-check"></i>Informasi!</h4>
<?= Yii::$app->session->getFlash('success') ?>
</div>
<?php endif; ?>
<div class="panel-body">
<table class="table table-striped">
<?php
echo $form->field($perkembangan, 'kode_anak_asuh')->dropDownList(
ArrayHelper::map(AnakAsuh::find()->all(), 'kode_anak_asuh', 'kode_anak_asuh'),
[
'prompt' => 'Pilih',
]);
?>
<?php
echo $form->field($calon, 'nama_calon')->textInput(['style'=>'width:350px', 'disabled' => true]);
?>
<?= $form->field($perkembangan, 'tanggal')->widget(DatePicker::classname(), [
'options' => [
'id' => 'tanggal',
'style' => 'width:350px',
'disabled' => true
],
'type' => DatePicker::TYPE_INPUT,
'language' => 'id',
'pluginOptions' => [
'autoclose'=>true,
]
]);
?>
<?= $form->field($perkembangan, 'kategori')->dropDownList(['Akademis' => 'Akademis', 'Kesehatan' => 'Kesahatan', 'Lain-lain' => 'Lain-lain'],
['prompt'=>'Pilih', 'style' => 'width:350px']) ?>
<?= $form->field($perkembangan, 'keterangan')->textArea(['style' => 'width:350px']) ?>
<div class="form-group">
<div class="col-sm-offset-4">
<?= Html::submitButton('Simpan', ['class' => 'btn btn-primary']) ?>
<?php
echo " ";
echo " ";
echo Html::a('Keluar', ['/'], ['class' => 'btn btn-success']);
?>
</div>
</div>
</table>
</div>
</div> <!-- /panel -->
</div> <!-- /container -->
<?php ActiveForm::end();?>
<?php
$script = <<< JS
$('input#calon-alamat').change(function() {
var kodeId = $(this).val();
$.get('get-calon', { kodeId : kodeId }, function(data) {
var data = $.parseJSON(data);
$('#calon-nama_calon').attr('value',data.nama_calon);
});
});
JS;
$this->registerJs($script);
?>
<?php
$script = <<< JS
$("#perkembangan-kode_anak_asuh").change(function() {
var terpilih = $(this).find("option:selected").text();
$("#create-form :select[name='kode_calon']").val(terpilih);
JS;
$this->registerJs($script);
?>
在控制器中:
namespace app\controllers;
use Yii;
use app\models\Perkembangan;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
use yii\filters\VerbFilter;
use yii\filters\AccessControl;
use app\models\Calon;
use yii\helpers\Json;
class PerkembanganController extends Controller
{
public function behaviors()
{
return [
'access' => [
'class' => AccessControl::className(),
'only' => ['create'],
'rules' => [
[
'actions' => ['create'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'delete' => ['POST'],
],
],
];
}
public function actionIndex()
{
return $this->redirect(['create']);
}
public function actionGetCalon($kodeId)
{
$calon = Calon::findOne($kodeId);
echo Json::encode($calon);
}
public function actionGetAnak($kodeAnak)
{
$anak = Anak::findOne($kodeAnak);
echo Json::encode($anak);
}
public function actionCreate()
{
$perkembangan = new \yii\base\DynamicModel(['kode_anak_asuh','kode_calon',]);
$perkembangan->addRule(['kode_anak_asuh'],'string');
$perkembangan->addRule(['kode_calon'],'string');
$perkembangan = new Perkembangan();
if (!$perkembangan) {
throw new NotFoundHttpException("The perkembangan was not found.");
}
$calon = new Calon();
if (!$calon) {
throw new NotFoundHttpException("The calon has perkembangan.");
}
// Display datetime in form and save to table
$perkembangan->tanggal = date('Y-m-d H:i:s');
if ($perkembangan->load(Yii::$app->request->post()) && $perkembangan->save()) {
Yii::$app->session->setFlash('success', 'Data berhasil disimpan!');
return $this->redirect(['index']);
return $this->refresh();
}
return $this->render('create', [
'perkembangan' => $perkembangan,
'calon' => $calon,
]);
}
}
在模型中:
namespace app\models;
use Yii;
use app\models\Perkembangan;
use yii\db\ActiveRecord;
use app\models\AnakAsuh;
class Perkembangan extends ActiveRecord
{
public static function tableName()
{
return '{{%perkembangan}}';
}
public function rules()
{
return [
[['kode_anak_asuh', 'keterangan', 'kategori'], 'required'],
[['tanggal'], 'safe'],
];
}
public function attributeLabels()
{
return [
[
'kode_anak_asuh' => 'Kode Anak Asuh',
'tanggal' => 'Tanggal Entry Perkembangan',
'keterangan' => 'Keterangan',
'kategori' => 'Kategori',
],
];
}
/**
* @return \yii\db\ActiveQuery
*/
public function getAnak()
{
return $this->hasOne(AnakAsuh::className(), ['tanggal' => 'kode_anak_asuh']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getCalon()
{
return $this->hasOne(Calon::className(), ['tanggal' => 'kode_calon']);
}
}
您是否還可以發布模型和搜索模型,因為可以僅在模型中而不是在控制器中完成連接和關系。 也許你可以看看這里 。 在此鏈接中,您將了解相關表格中的粘貼數據的處理方式,因此也許您可以進行一些小的更改並在應用程序中使用它們。 通過這種方式,我有了一個依賴項下拉列表,並且能夠在客戶設置了適用條件之后傳遞所有數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.