Tab visible on form save action in yii - yii

How can i make the CTabview visible on form create/save action in Yii?

IN your form where you have this button. wrap it inside if()
eg:-
<?php if($model->isNewRecord): ?>
// your button code
<?php endif; ?>

Related

How to generate Dynamic radio buttons in Yii advanced template?

This is my controller:
$Shipping = Shipping::find()->all();
foreach ($Shipping as $key => $value) {
pr($value['name']);
}die;
O:P/
Free
Pickup
Country Wise
API
I want to generate radio button list in view with those O:P .How?
If the radio buttons are in active form
you can use active radioList
<?= $form->field($model, 'your_field')->
radioList(ArrayHelper::map( Shipping::find()->all(), 'your_id', 'your_name')); ?>

Yii radioButtonList: radio button and item description are in separate lines

I've defined a radio button list in Yii as following:
<?php echo $form->radioButtonList($model, 'send_option', $email_exist); ?>
Here $email_exist variable is set in the controller.
The problem is radio button is in one line and item description is in another line. I want both are in the same line.
Any suggestions are appreciated.
Thank you in advance
Try to use template option , this example for checkBoxList:
<ul>
<?php echo CHtml::checkBoxList('checkBoxList','',$data, array(
'id'=>'checklist',
'name'=>'checklist',
'template'=>'<li>{input} {label}</li>',
));?>
</ul>
Note: it's same with radioButtonList

Showing a specific attribute when generating CRUD in Yii web framwork using giix extenstion

I am generating Models and CRUD for my database tables using giix in YII web framework, the thing is I want to change some of the attributes that showed to me but I dont know how ? I get into the code _FORM.php of the generated CRUD to one of the table and I knew the piece of code that I must change it to get a different attribute instead of one that shown to me without knowing why ?
<div class="row">
<?php echo $form->labelEx($model,'idEmployee'); ?>
<?php echo $form->dropDownList($model, 'idEmployee', GxHtml::listDataEx(Employee::model()->findAllAttributes(null, true))); ?>
<?php echo $form->error($model,'idEmployee'); ?>
</div><!-- row -->
in the previous code the form showed a drop-down list from another table jointed with the current table according to idEmployee, he's showing an attribute that I dont want, I want to know how to render the FirstName and the LastName in the drop-down list, any help please ?
I believe it is easier when you just create your own dropdown list provider
in the Employee.php you add these two functions:
public function getFullName()
{
return $this->first_name.' '.$this->last_name; // or what ever you want to be shown on the drop list
}
public static function getNamesList() {
return CHtml::listData(self::model()->findAll(), 'idEmployee', 'fullName');
}
in the _FORM.php write:
<div class="row">
<?php echo $form->labelEx($model,'idEmployee'); ?>
<?php echo $form->dropDownList($model, 'idEmployee', Employee::getNamesList()); ?>
<?php echo $form->error($model,'idEmployee'); ?>
</div><!-- row -->

How to implement a dynamic js script in Yii List View?

Hello and thanks for reading my question. I have a typical list view:
<?php $this->widget('bootstrap.widgets.TbListView',array(
'dataProvider'=>$dataProvider,
'itemView'=>'_view',
'emptyText'=>'No Jobs',
)); ?>
In my _view file I have a div and a button that slideToggles the div. If I just put the Javascript at the top of the page, it does not work because the results are dynamic and the name of the div changes with the id returned, eg:
id="detailsDiv-<?php echo $data->id_employer_contract;?>"
The problem is in my Javascript, which is as follows:
<?php Yii::app()->clientScript->registerScript('details', "$('#details-$data-id_employer_contract').click(function(){
$('#detailsDiv-$data->id_employer_contract').slideToggle();
return false;});");?>
How can I make this Javascript code dynamic? Meaning, how can I loop through the id? I tried adding the code to the listview property ajaxUpdate but it's still not working. Can someone tell me how I can loop a Javascript in a list view?
Add the id to your toggle buttons as data attribute:
<button class="toggleDetails" data-id="<?php echo $data->id_employer_contract ?>">
Then you can access these data attributes like this js:
<?php Yii::app()->clientScript->registerScript('toggleDetails', "
$('.toggleDetails').click(function(e){
var id = $(this).data('id');
$('#detailsDiv-' + id).slideToggle();
e.preventDefault();
});
", CClientScript::POS_READY) ?>
NOTE: You should not put this javascript into _view.php but into the main file where you render the List View. You only need this one single snippet to deal with all your buttons.

Modifying Yii Portlet Layout

Is it possible to modify the layout of a Yii Portlet?
Within my application I want to use a Portlet to allow for users to admin certain controllers and the Portlet with htmlOptions seems like a perfect fit but I'd like to change the layout/view it uses.
Any advice?
HtmlOptions let you add some options to the container tag.
This widget is not using view.
If you want to modify the presentation of the title, then you should override the method renderDecoration(). Its default code is:
protected function renderDecoration()
{
if($this->title!==null)
{
echo "<div class=\"{$this->decorationCssClass}\">\n";
echo "<div class=\"{$this->titleCssClass}\">{$this->title}</div>\n";
echo "</div>\n";
}
}
To customize the style you can change contentCssClass, decorationCssClass and titleCssClass
Then to change the content of the Portlet you have to override the method renderContent() that is empty by default. You can also set the content as follow:
<?php $this->beginWidget('zii.widgets.CPortlet'); ?>
...insert content here...
<?php $this->endWidget(); ?>