2012-04-04 5 views
1

오차드에서리스트를 연결하는 가장 좋은 방법은 무엇입니까?오차드 CMS에 목록 연결하기

예를 들어, 하나의 회사 목록과 하나의 프로젝트 목록이 있습니다. 내가 프로젝트를 만들 때, 나는 그것을 회사와 연관 짓고 싶다 ... 내가 만든 회사들로 미리 채워진 드롭 다운 상자가 이상적이다.

가장 좋은 방법은 무엇입니까?

P. 오차드 1.3을 사용하고 있습니다.

많은 감사!

답변

0

Orchard 워드 프로세서 1-N/N-N 예를 보면 편집기보기에서 확인란이나 드롭리스트를 미리 채우는 예제를 볼 수 있습니다.

droplist를 통해 두 개의 서로 다른 부분 사이의 관계를 설정하는 예제를 보려면 Codeplex 또는 Orchard 갤러리의 FeaturedItemSlider 또는 ContentSlider (이전에서 파생 된) Orchard 모듈을보십시오.

  1. CompanyPart 유형의 속성을 갖도록 ProjectPart를 업데이트합니다 (모델에 사용 된 이름이라고 가정).
  2. Migrations.cs에서 CompanyPartRecord_Id 열이 int 유형이되도록 ProjectPartRecord 테이블을 업데이트하십시오. Orchard는 ProjectPartRecord 테이블을 CompanyPartRecord 테이블에 조인 할 수 있도록 NHibernate로 매핑을 설정합니다.
  3. ProjectPartDriver 클래스 생성자를 업데이트하여 IRepository 유형의 매개 변수를 갖습니다. 인스턴스를 동일한 유형 (예 : _companiesRepo라는 이름)의 읽기 전용 클래스 속성으로 저장합니다.
  4. ProjectPartDriver .Editor() 메서드를 업데이트하여 _companiesRepo에서 회사 목록을 가져옵니다.
  5. 다른 ProjectPartDriver .Editor() 메서드 (포스트 백을 처리하는 메서드)를 업데이트하여 ProjectPart의 CompanyPart 속성을 드롭 다운에서 선택한 회사로 설정합니다. 드립리스트의 회사 ID를 사용하여 db에서 CompanyPart를 찾습니다. viewModels를 사용하여 작업을 쉽게하기 때문에 내 버전은 다음과 같습니다. projectPart.CompanyPart = _companiesRepo.Get(companyId)
  6. DropPlist를 렌더링하기 위해 ProjectPart의 editorTemplate을 업데이트하십시오.

프런트 엔드에서이 관계를 어떻게 사용할 계획인지 잘 모르겠습니다. 그것에 대해 갈 두 가지 방법이 있습니다. (1) Route와 일치하는 사용자 정의 컨트롤러를 만들 수 있습니다. 컨트롤러에는 설정 한 관계에 따라 파트를 조회하는 코드가 있습니다. 또는 (2) ProjectPartDriver.Display() 메서드에서 IContentManager를 사용하여 조회합니다.

+0

아, 맞춤 모듈을 만들지 않았습니다. CMS에 목록을 만들면됩니다. 보기에서 수동으로 목록을 쿼리하는 가장 좋은 방법은 무엇입니까? 자신의 SQL 쿼리를 작성 하시겠습니까? 우아한 방법이 있습니까? MVC에 익숙하지 않습니다. 감사! – NomadTraveler

+0

다양한 방법이 있습니다. linq, HQL 또는 순수 SQL을 사용할 수 있습니다. 해킹 솔루션을 수행하는 경우 Display() 메소드에서 쿼리를 배치하는 가장 좋은 장소는 Driver 클래스 일 수 있습니다. randompete가 믿는 모듈이있어서 코드를 작성하지 않고도 컨텐트 파트를 함께 연결할 수 있습니다. 나는 입력을 줄 수 없도록 그들을 사용하지 않았다. 나는 이것이 ScienceProject, 또는 Mechanics라고 불리는 것 같아요. –