[SOLVED] Cara menampilkan Field berbeda pada action create dan update

Malem semua…

Langsung ke topik aja, saya mau tanya gimana ya cara nampilin field yg beda pada action create dan update?

Jadi gini, saya mau bikin aplikasi dimana salah satunya adalah CRUD untuk tabel A dengan field 1,2,3,4,5,6,7.

Nah jadi pas mau creat si A ini, field yang ditampilin untuk diisi itu 1,2,3,4,5. Tapi pas mau update, yg nampil 1 ampe 7 (semua) tapi yg boleh diupdate cuma field 5,6,7, itu gmn ya?

Maklum masih baru di yii, jadi belum tau bgt.

Kurang lebih kyk gini lah:

Create A:

1 :

2 :

3 :

4 :

5 :

Tapi untuk update

1 : (Ga boleh diubah)

2 : (Ga boleh diubah)

3 : (Ga boleh diubah)

4 : (Ga boleh diubah)

5 : …

6 : …

7 : …

Thx anyway…

Model memiliki method isNewRecord yang nilainya "true" kalau insert dan "false" kalau statusnya update.

Jadi kita bisa manfaatin method isNewRecord untuk atur dia jadi disabled kalau lagi update

Coba ketik


<?php echo $form->($model, 'field1', array('disabled'=>$!model->isNewRecord)); ?>

maaf gan, saya kurang ngerti caranya

itu di taruh di formnya ya ato dimana?

di taruh di _form.php~

Wah ternyata salahnya ada di di kondisinya gan, kebalik nulis tanda serunya, soalnya copas,hehe…

Jadi harusnya gini ya.


<?php echo $form->textField($model, 'field1', array('disabled'=>!$model->isNewRecord)); ?>

Thx bgt gan.

Oya kalo mau cari tau properties yg apa aja yang boleh di array options (kayak ‘disabled’, ‘size’, dll)itu nyari taunya dimana ya gan? Jadi kalo tau kan bisa ngira2 sendiri.

thx… :)

Tidak ada aturan pasti sih, soalnya tulis attribute apapun Yii tetap akan tampilin HTML-nya.

Tetapi kalau ngomong tentang atribut yang valid, mgkin bisa cek di W3School. Ini contoh attribute yang available di tag <input> http://www.w3schools.com/tags/tag_input.asp

khusus yang attribute seperti checked ama disabled biasanya kita kan harus tulis

<input checked="checked" disabled="disabled"/>

di Yii cukup kasih true dan false.


array('checked'=>true, 'disabled'=>true);

o gitu gan…

jadi setelah ane liat2 visibility ga ada ya gan?

kalo mau nyembunyiin field beserta labelnya jadi bisa pake apa ya bro?

Bikin 2 aja formnya gan… Satu untuk create satu untuk update…

yang create kira2 kaya gini lah…




<div class="form">


<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'this-form',

	'enableAjaxValidation'=>false,

)); ?>


	<p class="note">Fields with <span class="required">*</span> are required.</p>


	<?php echo $form->errorSummary($model); ?>


	<div class="row">

		<?php echo $form->labelEx($model,'1'); ?>

		<?php echo $form->textField($model,'1'); ?>

		<?php echo $form->error($model,'1'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'2'); ?>

		<?php echo $form->textField($model,'2'); ?>

		<?php echo $form->error($model,'2'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'3'); ?>

		<?php echo $form->textArea($model,'3'); ?>

		<?php echo $form->error($model,'3'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'4'); ?>

		<?php echo $form->textArea($model,'4')); ?>

		<?php echo $form->error($model,'4'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'5'); ?>

		<?php echo $form->textArea($model,'5')); ?>

		<?php echo $form->error($model,'5'); ?>

	</div>


	


	<div class="row buttons">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>

	</div>


<?php $this->endWidget(); ?>


</div><!-- form -->



Yang update kira2 kaya gini…




<?php $form=$this->beginWidget('CActiveForm', array(

	'id'=>'this-form',

	'enableAjaxValidation'=>false,

)); ?>


	<p class="note">Fields with <span class="required">*</span> are required.</p>


	<?php echo $form->errorSummary($model); ?>


	<div class="row">

		<?php echo $form->labelEx($model,'1'); ?>

		<?php echo $model->1; ?>

		<?php echo $form->error($model,'1'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'2'); ?>

		<?php echo $model->2; ?>

		<?php echo $form->error($model,'2'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'3'); ?>

		<?php echo $model->3; ?>

		<?php echo $form->error($model,'3'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'4'); ?>

		<?php echo $model->4); ?>

		<?php echo $form->error($model,'4'); ?>

	</div>


	<div class="row">

		<?php echo $form->labelEx($model,'5'); ?>

		<?php echo $form->textArea($model,'5')); ?>

		<?php echo $form->error($model,'5'); ?>

	</div>





	<div class="row">

		<?php echo $form->labelEx($model,'6'); ?>

		<?php echo $form->textArea($model,'6')); ?>

		<?php echo $form->error($model,'6'); ?>

	</div>


        <div class="row">

		<?php echo $form->labelEx($model,'7'); ?>

		<?php echo $form->textArea($model,'7')); ?>

		<?php echo $form->error($model,'7'); ?>

	</div>


	<div class="row buttons">

		<?php echo CHtml::submitButton($model->isNewRecord ? 'Create' : 'Save'); ?>

	</div>


<?php $this->endWidget(); ?>


</div><!-- form -->



Not tested… tapi ya kira2 kaya gitu…

Di controller nya tinggal diatur deh yang mana yg di render…