我試圖合併3個模型來創建第四個視圖。我有model1
,model2
和model3
,我想將它們合併爲modelMaster
。我也爲他們創建了控制器。當我撥打modelMaster/create
動作時,我呈現modelMaster/create
視圖,該視圖呈現modelMaster/_form
視圖。在這個_form
視圖中,我也想呈現model1/_form
,model2/_form
和CHtml::dropDownList()
,這些數據來自model3
。但是,這不起作用。我怎樣才能將這三種不同的觀點結合起來?單個創建視圖上的多個_form視圖[Yii]
回答
如果試圖跳過形式從_form觀點生成和使用獨特的型號名稱,我想你可以使用本手冊:single form with more models 所以生成表單定義的總處理父視圖和_form唯一的輸入
其他方式使用單個模型視圖,創建由延長CFormModel一個表單模型,並處理數據這個模型和包裹子模型之間的結合
如果您想窩幾種形式到一個主表,您必須相應地調整表單模板。您所有的modelMaster/create
,model1/_form
,model2/_form
-views創建並呈現新的CActiveForm
(以及因此幾個<form>
標籤)。
因爲你不能在HTML嵌套形式元素(應該怎麼html的知道哪些行爲將數據傳遞給)你必須這樣做,以避免這種情況如下:
提取表單的輸入您想嵌入一個新的視圖,例如
model1/_formInputs
會是什麼樣子... <?php echo $form->labelEx($model,'name'); ?> <?php echo $form->textField($model,'name'); <?php echo $form->error($model,'name'); ...
改變
model1/create
和其他意見,並獲得在這裏創建的,通過指定的$this->beginWidget
給變量$form
回報形式的引用(如果尚未完成):<?php $form = $this->beginWidget('CActiveForm', array( 'id'=>'foo', )); ?>
與
<?php $this->renderPartial('model1/_formInputs', array('form' => $form); ?>
替換原有的輸入字段現在,例如如預期
爲了讓您的多型號形式工作,你只需要拿到參考
modelMaster/create
創建的窗體,並用它的RenderPartial所有您需要的*/_formInputs
老model1/create
- 視圖應該工作。還請記住將輸入的模型包含到renderPartial-call中。所以modelMaster/create
看起來是這樣的:<?php $form = $this->beginWidget('CActiveForm', array( 'id'=>'foo', )); ?> /* Master Inputs here */ // Rendering other models' inputs <?php $this->renderPartial('model1/_formInputs', array('form' => $form, 'model' => $model1); ?> <?php $this->renderPartial('model2/_formInputs', array('form' => $form, 'model' => $model2); ?> /* Render Form Buttons here */ <?php $this->endWidget(); ?>
使用Ajax提交,Yii中很容易做到,這將使事情變得容易在控制器瞭解,每個控制器將有一個保存和使用JSON迴應確認保存。已經有ajax驗證。
/**
* Performs the AJAX validation.
* @param CModel the model to be validated
*/
protected function performAjaxValidation($model)
{
if(isset($_POST['ajax']) && $_POST['ajax']==='employee-form')
{
$valid = CActiveForm::validate($model);
if(strlen($valid) > 2) {
echo $valid;
Yii::app()->end();
}
}
}
,你可以看到我已經修改了它返回的錯誤,如果有一個(驗證返回[]如果它是有效的,我也許應該檢查該代替strlen的> 2),否則讓腳本繼續,在這種情況下,它將轉到保存功能。
- 1. Yii在單個視圖上實現多個表單驗證
- 2. 用於iPhone上單個視圖的多個視圖控制器
- 3. 在單個視圖上有多個視圖的問題
- 4. 如何在winforms中的單個樹視圖中創建多個樹視圖?
- 5. 主視圖上的多個視圖
- 6. 從另一個視圖創建視圖
- 7. 在視圖中創建一個視圖
- 8. 在第二個視圖上創建一個按鈕視圖
- 9. 在angularjs中爲多個部分視圖創建單個html視圖
- 10. 創建多個連接的視圖
- 11. 創建多個表的視圖
- 12. 單個OpenGL上下文,多個視圖
- 13. 如何創建可用於多個視圖的視圖?
- 14. 創建來自多個視圖模型的視圖
- 15. 桌面視圖在滾動單元格上創建多個accessoryType
- 16. 創建從單個模板繼承的多個動態視圖
- 17. 單頁多個控制器的多視圖Yii PHP
- 18. 在視圖控制器內創建多個子視圖
- 19. 如何從多個表創建視圖?
- 20. 創建來自多個查詢視圖
- 21. 創建視圖跨越多個表
- 22. SQL Server創建從多個視圖
- 23. SQL - 使用多個CTE創建視圖
- 24. Joomla創建和調用多個視圖
- 25. 加入多個表以創建視圖
- 26. 如何用多個表創建視圖?
- 27. 創建SQL視圖,在多個表
- 28. 使用多個表創建視圖?
- 29. Yii Framework如何在一個視圖中使用多個表單
- 30. 在視圖上創建物化視圖
當你這樣做會發生什麼?你說它不起作用,但會發生什麼?腳本是否崩潰,是否產生輸出等? –
嵌套'form'元素!所以如果我點擊主提交按鈕,它什麼都不做! – acidghost
好吧,您必須在您的表單中顯示您現在擁有的代碼。並告訴你想要什麼確切的行爲,即如果你不想嵌套,你希望表單行爲如何。請在你的問題上更清楚一點。 –