3

일부 국가 이미지를 표시하기 위해 yii 부트 스트랩 축소판 그리드을 사용하고 싶습니다. 그런 다음 각 국가를 표시하고 표시하고 싶습니다. 도시 등, 전체 화면을 다시로드하지 않고 그냥 오른쪽. 아래보기가 이미지를 표시하는 데 사용되는 다른 것들 사이보기 만들기Yii 부트 스트랩 Thumbail - 이미지 드릴 다운

echo $this->renderPartial('_form', $this); 

에 대한

코드입니다. 그것에는 두 개의 div가 있습니다. 국가/도시에 관한 이미지를 따기위한 하나의 다른 표시는 사용자가 사진 근처에 있어야하는데 버튼을 클릭하여 도시의 관점에서 만들어진 것을 선택하지만, 경우에만 도시로 사용자 훈련.

1 의심 -> 내가 파셜을 렌더링해야 하는가? 난 단지 화면의 오른쪽, 이미지를 가지고있는 하나를 새로 고칠. 이전 코드에서 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를 전송합니다.

2 의심 -> 어떻게 내가 이미지을 클릭하는 대신이 할 수있는 버튼을 가진 드릴 다운 할 수 있습니다 ???

사용자가
을 집어 국가에 따라
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)); 

     } 

* 이 동작은 위의 차례로 *

$this->widget('bootstrap.widgets.TbThumbnails', array(
    'id' => 'countryThumbId', 
    'dataProvider' => $dProvider, 
    'template' => "{items}\n{pager}", 
    'itemView' => '_cityThumb', 
)); 

* _cityThumb *

4 의심 _cityThumb를 호출이보기 _formCity을 발사 -> 성읍이 있었다 내가 나에게 도시를 표시하는 버튼을 클릭하면, 렌더링에만 화면, 아무 일도하지, 왜 ????

echo $this->createUrl('place/view', array('id' => $data['id'])); 
긴 포스트와 많은 의심 죄송

하지만 PHP는 프레임 워크와의 첫 시간 .... 그리고 YII 적어도 처음에는, 그것은 쉬운 일이 아니다. : - [

+0

왜'$ this'를'renderPartial()'에 넘겨 줍니까? 여기 $ 컨트롤러는 맞습니까? 또는 약간의 변경을 했습니까? 또한 회신을 보내고 알림을 받으려면 @ bool.dev를 사용할 수 있습니다. –

+0

예, 그 컨트롤러, 그리고 그것은 여기 없어야한다. 왜냐하면 내가 필요 없다. :) @ bool.dev –

+0

흠, 전에는 '$ this'에 컨트롤러의 인스턴스가 항상 있기 때문에 이전에 해본 적이 없다. 이것은'$ this'가 암묵적으로 전달된다는 것을 의미합니다. 편집 : 질문에 대답하는 데 도움이 될만한 특정 이유에 대해, lemme 알아요, coz 알아요 –

답변

2

Q. 부분을 렌더링해야합니까?Q. 얼마나 많은 renderPartial을 중첩 할 수 있습니까?

가 렌더링 된 결과에 레이아웃을 적용하지 않습니다

대부분의 확실히 당신은 renderPartial is there은 사물의 이러한 종류의 작업을 수행 할 수 있어야합니다. 따라서 대부분 부분 뷰 또는 AJAX 응답 렌더링에 사용됩니다.

그리고 당신은 둥지 많은 당신이 원하는대로, 단지이보기 파일을 분리하는 것은 목적에 봉사해야한다는 마음에 유지할 수 있습니다. 내가 이미지를 클릭하는 대신이 할 수있는 버튼을 가진 드릴 다운 할 수있는 방법


Q.?

이미지의 자바 스크립트 클릭 핸들러 만 사용하면됩니다. 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.


아무것도, 왜 일어나지 않았다, 내가 나에게 도시를 표시하는 버튼을 클릭하면, 렌더링 된 경우에만 화면을했다?

이렇게하면 결국 디버깅이 필요합니다. 내가 당신에게 줄 수있는 팁은 http 호출이 Firebug을 사용하여 발생하는지 확인하는 것입니다.

+0

당신이 의심이나 아무것도 있으면 의견을거야. –

+0

빠른 응답에 많은 감사드립니다. Tomorow 나는 그것을 시도하고 의견을 게시 할 것입니다. –

+0

확실히 시간을내어 –

관련 문제