暫時無法包括髮電機本身自動完成後,我建立使用JavaScript的解決方法。
重要:此解決方案假定您使用的是警予先進的模板,並使用GII從後端應用程序。您將需要調整代碼,如果這不是所有的
首先,我包括我的JS腳本在gii/templates/crud/form.php
的情況下,注意,這個目的地可能從你的不同,這取決於在那裏你已經設置了GII的模板。
\backend\assets\CrudAutocompleteAsset::register($this);
echo $form->field($generator, 'templateDestination')->dropDownList([
"backend" => "Backend",
"frontend" => "Frontend"
]);
您還需要將公共財產templateDestination
包括您Generator
類。如果您不使用高級模板,則不需要此選項和選擇字段。那麼你只需要資產。如果你不知道如何使用資產,檢查出的Yii2 guide about Assets
/**
* Destination namespace of generated code for advanced yii template
* @var string
*/
public $templateDestination = "backend";
的資產CrudAutocompleteAsset
意願廣告我的js文件。我做了一個sample on JS fiddle
$(document).ready(function() {
var templateDestinationSelect = $("select[name='Generator[templateDestination]']");
var modelClassInput = $("input[name='Generator[modelClass]']");
var searchModelClassInput = $("input[name='Generator[searchModelClass]']");
var controllerClassInput = $("input[name='Generator[controllerClass]']");
var viewPathInput = $("input[name='Generator[viewPath]']");
modelClassInput.change(function() {
var destination = templateDestinationSelect.val();
var modelClass = $(this).val();
var modelNs = modelClass.substr(0, modelClass.lastIndexOf("\\"));
var targetNs = destination + modelNs.substr(modelNs.indexOf("\\"));
var modelClassName = modelClass.substr(modelClass.lastIndexOf("\\") + 1);
var modelViewName = modelClassName.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();
var modelSearchClass = modelNs + "\\" + modelClassName + "Search";
searchModelClassInput.val(modelSearchClass);
var controllerClassName = targetNs.replace("models", "controllers") + "\\" + modelClassName + "Controller";
controllerClassInput.val(controllerClassName);
var viewPath = "@app/../" + destination + "views/" + modelViewName;
viewPathInput.val(viewPath);
})
不是我的問題,我已經有了我的模板和生成器。問題在於如何將自動完成值添加到Gii的後端,因爲這是由生成器構建的 – StoryTeller