The Comedy of Errors

  1. The missing echo
  2. The echo too much
  3. The true false
  4. Rules for numbers
  5. Rules for enums
  6. Rules for foreign keys
  7. Ending ?> tag in non-view
  8. Semicolon
  9. visible option in CMenu and null values

Please join the party by adding your own favorite Yii programming errors. Be sure to leave at least a hint at the correction.

The missing echo

In the view put:

<h1>Edit item: <?php $model->label; ?></h1>

Now spend your time debugging why you are not seeing the value of $model->label even though you are clearly asking for it.

The echo too much

In the view put:

<h1>Edit item: <?php echo $this->widget('CWidget'); ?></h1>

"Object of class CWidget could not be converted to string." A widget may not have an echo.

The true false

In the config file or wherever you are to provide a boolean value, put: ~~~ 'someOption' => 'false', ~~~ Then read the PHP manual to find out why this does not evaluate to false like you wanted it to.

Rules for numbers

In the model rules() method put:

array('count', 'number', 'integerOnly'=>true),

then try

array('count', 'numeric', 'integerOnly'=>true),

and only then look it up: 'numerical'.

Rules for enums

In the model rules() method put:

array('format', 'range', 'in' => array('html', 'rss2', 'atom', 'json', 'xml')),

then later remind yourself that Yii is not SQL.

Rules for foreign keys

In the model rules() method put:

array('foreingKey', 'exists', 'className' => 'SomeModel', 'attributeName' => 'id'),

Sure we have 'exists' method for CActiveRecord model, but ...

Ending ?> tag in non-view

Extend a base class or edit a config file (needs to be included before the sessions starts) and leave a ?> at the ending with at least one trailing white space character. Make sure output buffering is off. Cry manly tears while trying to figure out why "Cannot modify header information - headers already sent" spams your log files.

Semicolon

$total = 0;
foreach($model->rels as $rel);
{
    $total += $rel->count;
}
echo $total; // wrong result!!

I wasted 12 hours debugging this.

visible option in CMenu and null values

Use a parameter feature.enabled to enable/disable a feature through configuration. And then wonder why you still see the menu item, even if you have no feature.enabled parameter at all.

<?php $this->widget('zii.widgets.CMenu', array(
    'items' => array(
        array(
            'label' => 'A new feature',
            'url' => array('feature/view'),
            'visible' => Yii::app()->params['feature.enabled'],
        ),

Yii::app()->params['feature.enabled'] returns null if the parameter is not defined. But in this case that's different from false because CMenu uses isset($items['visible']) which returns false for null values.

19 0
15 followers
Viewed: 19 731 times
Version: 1.1
Category: Others
Written by: fsb
Last updated by: Mike
Created on: Dec 7, 2011
Last updated: 11 years ago
Update Article

Revisions

View all history

Related Articles