Posts tagged with yii

Hello world!

After too long I made a new personal website again. I will post all my interesting findings, technical posts and my idea's and visions on here.

I build my new site on the excellent Yii framework, which is quite an improvement over CakePHP which I mostly used before.

I have added some images from the backend, it features a custom RBAC system based on routes, a blog module and a media model to handle all files.

read more

Yii tag it widget

You can use this widget for tag forms it features autocomplete and and easy way to delete added tags. I use it in combination with the excellent Taggable behavior


Tag it screenshot

Tag it form

read more

Yii image helper

There are several image components already for Yii probably the most popular is the Kohana port one of the limitations this component has is that it cannot save thumbnails with adaptive resizing.

I have written a small helper class for PHPThumb the library included has a changed filename for Yii's autoloading.


The helper will allow for automatic caching of thumbnails, just make sure the directory is writeable, the thumb name is based on resize option and width / height and will be saved under a .tmb directory.

Simple example

This will create a thumbnail with adaptive resize width and height will be as specified and cropped from center.

<?php echo ImageHelper::thumb(600,800,'/upload/image.jpg');?>

Advanced example

This changes the resize method so the image will not be cropped enhances the quality settings for jpeg.


<?php echo Yii::app()->request->baseUrl.ImageHelper::thumb(600,800,$img, array(
	'method' => 'resize', 
	'quality' => 90));

With the 3rd parameter you can set any PHP Thumb setting look in the documentation for further information.


Yii slug behavior

Make your url's look pretty, for search engine's and human's :) 


How to use

Just extract the file and drop it in your components directory. I always keep my behaviors seperate but this depends on your structure.

You will need to have two fields in your table, one with the title or name and the second one where you store the slug make this a varchar.

Now add the behavior in your model, rename the title and slug column to the fields in your database


 * Model behaviors
 * @return array
public function behaviors() {
	return array(
		'SlugBehavior' => array(
			'class' => 'SlugBehavior',
			'slug_col' => 'slug',
			'title_col' => 'title',
			'overwrite' => false,


Now if you save the model the slug will be saved automatically.

*It should now work with high utf 8 ranges too like asian characters but I haven't tested all of them. Let me know if you find any issues.