Yii Framework Forum: 960 Grid En Yii - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

960 Grid En Yii Rate Topic: -----

#1 User is offline   RobW 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 30-December 12

Posted 30 December 2012 - 12:05 PM

Hallo,

Ik ben redelijk nieuw in heel het Yii gebeuren.
Om alles onder de knie te krijgen ben ik van de Blog demo vertrokken om een soort portfolio te maken.

Momenteel ben ik echter vastgelopen op een, op het eerste zicht nogal basic, probleem.
Ik wou per project in het portfolio een afbeelding tonen en de output verdelen over 3 kolommen met behulp van het 960 grid...
Ik meen op dit moment dat een Widget hiervoor de beste oplossing zou zijn. Maar misschien kan het veel eenvoudiger. Vandaar mijn topic in dit forum.

(Ik geef een stuk van de image en de project model mee.. De views staan onderaan)

ProjectController
class ProjectController extends Controller
{
    ...
        /**
	 * Lists all models.
	 */
	public function actionIndex()
	{
		$dataProvider=new CActiveDataProvider('Project');
		$this->render('index',array(
			'dataProvider'=>$dataProvider,
		));
	}
    ...
}

Project model
class Project extends CActiveRecord
{
	/**
	 * This is the model class for table "{{project}}".
	 *
	 * The followings are the available columns in table '{{project}}':
	 * @property integer $id
	 * @property string $name
	 * @property integer $type
	 * @property string $tags
	 * @property string $image
	 * @property string $description
	 * @property integer $create_time
	 * @property integer $update_time
	 * @property integer $author_id
	 */
	const STATUS_DRAFT=1;
	const STATUS_PUBLISHED=2;
	const STATUS_ARCHIVED=3;
	
	private $_oldTags;
    ...
}

Image model
class Image extends CActiveRecord
{
        /**
         * This is the model class for table "{{image}}".
         *
         * The followings are the available columns in table '{{image}}':
         * @property integer $id
         * @property string $filename
         * @property integer $project_id
         */
    ...
}


views

project/index
<?php
/* @var $this ProjectController */
/* @var $dataProvider CActiveDataProvider */

$this->breadcrumbs=array(
	'Projects',
);

$this->menu=array(
	array('label'=>'Project toevoegen', 'url'=>array('create')),
	array('label'=>'Projecten bewerken', 'url'=>array('admin')),
);
?>

<?php if(!empty($_GET['tag'])): ?>
	<h1>Projecten getagged met <i><?php echo CHtml::encode($_GET['tag']); ?></i></h1>
<?php else: ?>
	<h1>Projecten</h1>
<?php endif; ?>

<?php $this->widget('zii.widgets.CMenu', array(
	'items'=>$this->menu,
)); ?><!-- action menu -->
	
<?php $this->widget('zii.widgets.CListView', array(
	'dataProvider'=>$dataProvider,
	'itemView'=>'_view',
	'template'=>"{items}\n{pager}",
)); ?>


project/_view
<?php
/**
 * Showing the first image from a project
 * 
 * @var $this ProjectController
 * @var $data Project
 * 
 */

$firstImage=$data->images[0];
$markup='<div class="grid_3">'.CHtml::image(Yii::app()->baseUrl.'/images/projects/'.$data->name.'/thumb/'.$data->create_time.'_'.$firstImage->filename).'</div>';

?>
<?php if(!isset($detail)):
	echo CHtml::link($markup, array('view', 'id'=>$data->id));
else:
	echo $markup;
endif; ?>


In deze laatste wordt dus per project 1 afbeelding getoond dewelke gelinkt is naar de pagina met meer info over het project.
Als class geef ik hier grid_3 op. Om 3 afbeeldingen naast elkaar te krijgen moet de eerste ook een class alpha krijgen en de derde een class omega.

normaal zou ik dit met een foreach oplossen ofzo, maar heb totaal geen idee hoe ik dit combineer met renderPartial op een goede manier.

Ik dacht er ook nog aan om $data->id te gebruiken om te checken voor even/oneven, maar als er dan records gedelete worden zou de layout breken ?!

Kan iemand me weer op het goede pad helpen ?
(Sorry als de vraag verward en onsamenhangend over komt, maar ben al een hele dag met dit domme probleem bezig en denk niet zo helder meer :mellow: )
Alvast bedankt.
0

#2 User is offline   RobW 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 2
  • Joined: 30-December 12

Posted 30 December 2012 - 04:38 PM

At last,

Om mijn eigen probleem op te lossen:

in de index view
...
<?php 
        $class="";
	
	for($i=1;$i <= $dataProvider->itemCount;$i++):
		if($i==1 || $class=="omega") { $class="alpha"; } 
		elseif(($i%3)==0) {$class="omega";} else {$class="";}

        // !! data[$i-1] because we have 3 cols: $i%3 must be 0 in last col
	?>
	<div class="grid_3 <?= $class; ?>">
		<?php $this->renderPartial('_firstImage', array(
			'data'=>$dataProvider->data[$i-1],
		)); ?>
	</div>
<?php endfor; ?>
...


in _firstImage partial
$firstImage=$data->images[0];
echo CHtml::image(Yii::app()->baseUrl.'/images/projects/'.$data->name.'/thumb/'.$data->create_time.'_'.$firstImage->filename);


Geen idee of dit dé way to do it is. Maar het werkt :unsure: :rolleyes:
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users