Iam a yii newbie(一周前开始)我想使用 yii Bootstrap Thumbnail网格以显示一些国家/地区的图片,然后我想在每个国家/地区进行钻取并显示城市等,没有重新加载整个屏幕,只是右侧。
创建视图的代码
echo $this->renderPartial('_form', $this);
在其他事物之间,此视图用于显示图像。它有两个div。一个用于选择与国家/城市相关的图像,另一个用于通过点击应该在图片附近的按钮来显示用户在城市方面做出的选择,但仅在用户钻入城市时。
第一个疑问 - > 我应该渲染部分内容吗?我只想刷新屏幕的右侧,即拥有图像的那一侧。考虑到iam在前面的代码中呈现一个部分,以及下面的其他代码。这甚至可能吗?
$this->renderPartial('_formCountry', $this);
此视图负责加载小部件
$dataProvider = new CActiveDataProvider('Country');
$this->widget('bootstrap.widgets.TbThumbnails', array(
'id' => 'countryThumbId',
'dataProvider' => $dataProvider,
'template' => "{items}\n{pager}",
'itemView' => '_countryThumb',
));
下面的视图用国家/地区的图片填充,并通过帖子发送国家/地区的ID。
第二个疑问 - >我如何深入点击图像,而不是按钮来执行该操作???
echo $this->createUrl('city/view', array('id' => $data['id']));
$this->widget('bootstrap.widgets.TbButton', array(
'label' => 'cidades',
'buttonType' => 'ajaxButton',
'type' => 'primary', // null, 'primary', 'info', 'success', 'warning', 'danger' or 'inverse'
'size' => 'mini', // null, 'large', 'small' or 'mini'
'url' => Yii::app()->createUrl("tripDetail/showCities"),
'ajaxOptions' =>
array('data' =>
array(
'id' => $data['id'],
),
'type' => 'POST',
)
)
);
点按此按钮会触发此操作,并根据用户选择的国家/地区获取新的dataProvider
第3个疑问 - > 可以嵌套多少个renderPartials ????
public function actionShowCities()
{
$cityId = $_POST['id'];
$dataProvider = $this->getCities($cityId);
$this->renderPartial('_formCity', array('dProvider'=>$dataProvider));
}
* 以上操作会触发此视图_formCity,后者又调用_cityThumb *
$this->widget('bootstrap.widgets.TbThumbnails', array(
'id' => 'countryThumbId',
'dataProvider' => $dProvider,
'template' => "{items}\n{pager}",
'itemView' => '_cityThumb',
));
*的 _cityThumb *
第4个疑问 - > 城市是唯一呈现的屏幕,当我点击按钮向我显示城市时,没有发生任何事情,为什么????
echo $this->createUrl('place/view', array('id' => $data['id']));
很抱歉很长的帖子和很多疑惑,但它是我第一次使用php框架....而yii并不是那么容易,至少在开始时。 : - [
答案 0 :(得分:2)
Q值。我应该渲染部分内容吗?问:可以嵌套多少个renderPartials?
你肯定应该renderPartial
is there做这些事情:
它不会对渲染结果应用布局。因此,它主要用于渲染局部视图或AJAX响应。
你可以根据需要嵌套,但请记住,分离这些视图文件应该有用。
Q值。如何深入点击图像,而不是按钮来执行此操作?
只需对图像使用javascript点击处理程序。一个jquery示例:
<!-- sample image element -->
<img src="xyz.jpg" id="some_id" class="some-class" alt="Image not loaded"/>
<?php
// in yii it's good to use registerScript to add a javascript snippet to generated html
Yii::app()->clientScript->registerScript('script-name','
$("#some_id").click(function(){
// here make the ajax call
});
');
有很多方法可以为图像添加点击处理程序,最好的方法取决于您使用视图添加图像标记的方式。
Q值。城市是唯一呈现的屏幕,当我点击按钮向我展示城市时,没有发生任何事情,为什么?
这需要你的调试。我只能给你的提示是使用Firebug检查http呼叫是否正在发生。