2011-08-28 7 views
0

나는 레서피, 아이템 및 유닛 테이블/모델을 가지고 있습니다. Recipe 및 Item과 HABTM 관계가 있으며 Recipe를 추가/편집 할 때 기본 다중 선택 상자가 나타납니다. (대부분 Bake를 사용하고 있습니다). 문제는 수량과 단위를 각 항목과 연관시켜야한다는 것입니다. UI의예쁜 HABTM리스트 엔트리

샘플 난을 기대 해요 :

sample

그것의 큰 구성 요소 추가/삭제/개별 항목을 편집 할 수있는 기능입니다. 제출 된 양식 데이터를보고 상상해보십시오. 일부 jquery와 복제본을 사용하면 효과가 있습니다. 그러나 누군가 이미 이미 이것을 위해 행동을 이미 창조했는지 궁금합니다.

현재 모델 (즉, 해당 물건 단축이 제거 된 사용자/노트/등) :

class Item extends AppModel { 
    var $name = 'Item'; 

// id : int 
// name : varchar 
// unit_id : int 

    var $belongsTo = array(
     'Unit' => array(
      'className' => 'Unit', 
      'foreignKey' => 'unit_id' 
     ), 
    ); 

    var $hasAndBelongsToMany = array(
     'Recipe' => array(
      'className' => 'Recipe', 
      'joinTable' => 'recipes_items', 
      'foreignKey' => 'item_id', 
      'associationForeignKey' => 'recipe_id', 
     ) 
    ); 
} 

.

class Recipe extends AppModel { 
     var $name = 'recipe'; 
     var $displayField = "name"; 

// id : int 
// name : varchar 


     var $hasAndBelongsToMany = array(
      'Item' => array(
       'className' => 'Item', 
       'joinTable' => 'recipes_items', 
       'foreignKey' => 'recipe_id', 
       'associationForeignKey' => 'item_id', 
      ) 
     ); 
    } 

.

class RecipesItem extends AppModel { 
    var $name = 'RecipesItem'; 

// id : int 
// quantity : int 
// unit_id : int 
// recipe_id : int 
// item_id : int 



    var $belongsTo = array(
     'Unit' => array(
      'className' => 'Unit', 
      'foreignKey' => 'unit_id' 
     ), 
     'Recipe' => array(
      'className' => 'Recipe', 
      'foreignKey' => 'recipe_id' 
     ), 
     'Item' => array(
      'className' => 'Item', 
      'foreignKey' => 'item_id' 
     ) 
    ); 
} 
+0

는, CakePHP의이 RecipesItem에 연결 (당신이 HABTM 관계의 속성을 허용하지 않습니다). 나중에, 당신은 RecipesItem에 대한 MVC를 구울 수 있고 모두 완료됩니다. 당신이 요구 한 것을 성취하기 위해, 구운 추가 뷰를 Recipes add 메소드로 "이동"하여 JS에 필요한 변경을 가할 수 있습니다. – tvdias

답변

0

당신이 무엇을 요구하고 있는지 확실하지 않습니다. 항목을 추가, 편집 및 삭제하려면 항목 컨트롤러에 작업을 생성해야합니다. 레시피가 가진 아이템과 같은 연관성 데이터를 저장하는 것은 폼이 올바르게 설정되었다고 가정 할 때 컨트롤러 액션의 save() 메소드에 의해 자동적으로 처리되어야합니다.

호기심에서 벗어난 RecipesItem 모델은 어디에서 왔습니까? 그게 무엇을 나타 냅니까? 내가 올바르게 당신을 이해하고 있다면, 당신은 조리법 모델과 HABTM 관계가있는 아이템 모델을 가지고 있습니다. 조인 테이블에 대한 모델이 필요하지 않아야합니다. recipes_items 테이블은 두 모델의 항목을 연결합니다.

+0

기본적으로 모형 (mockup)에서 양식 요소의 종류를 생성하는 auto-mahagic (즉, 베이크 또는 동작)이 존재하거나 생성하기가 쉽습니다. 나는 그 필드 요소가 추가적인 관련 필드 (여전히 Cake를 통해 내 방식을 느끼는 것)를 가져야한다는 것을 어떻게 정의 할 수 있는지에 대한 희망으로 3 번째 모델을 만들었으며, 적절한 입력을 만들고, – mondo

0

케이크가 당신을 위해 할 수있는 것이 아닙니다. 어쩌면 당신을 조금 도와 줄 수있는 js가 있을지 모르지만, 당신은 꽤 많은 자바 스크립트를 써야 할 것입니다.

0

"cooler"로 선택 태그를 "변환"하려면 javascript를 사용해야합니다.

다음은 꽤 많이 사용하는 jquery-multiselect 플러그인입니다. 모든 멀티 선택을 1 줄의 코드로 바꾸기 위해 쉽게 설정할 수 있습니다.

여기

더 많은 정보 : 당신이 hasMany의 관계에 HABTM에서 처음 2 개 모델을 변경해야합니다, 그래서 내가 아는 한 http://www.erichynds.com/jquery/jquery-ui-multiselect-widget/