对于Beego的controller怎么用嵌入实现继承问题感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍beegocontroller,并为您提供关于ActionAppHttpControll
对于Beego的controller怎么用嵌入实现继承问题感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍beego controller,并为您提供关于Action AppHttpControllersKategoriController@store 未定义、angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.、angularJS指令中的controller和controllerAs、beego 如何依赖注入mgo到controller的有用信息。
本文目录一览:- Beego的controller怎么用嵌入实现继承问题(beego controller)
- Action AppHttpControllersKategoriController@store 未定义
- angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.
- angularJS指令中的controller和controllerAs
- beego 如何依赖注入mgo到controller
Beego的controller怎么用嵌入实现继承问题(beego controller)
Go Lang是无继承层次的轻量级面向对象编程范式。Go Lang中的接口与实现之间完全是非侵入式的。这种接口实现方式很值得称赞。不但如此,在Go Lang中只有类型嵌入而没有类型继承。这规避了很多与继承有关的复杂问题,也使类型层次更加简单化了。
在Go Lang里面,只存在嵌入而不存在继承的概念。Go Lang并不提供典型的类型驱动的子类化方法,但是靠这种嵌入的方式实现了同样的效果。
下面上代码:
基础类base.go
package controllers
//基础类,我准备把所有的权限判断放到这个类里面
import (
"github.com/astaxie/beego"
)
type BaseController struct {
beego.Controller
ControllerName string
ActionName string
TplNames string
}
//直接在页面输出字符串
func (this *BaseController) Html(str string) {
this.Ctx.WriteString(str) //self.GetControllerAndAction()
}
继承类,index.go
package controllers
type IndexController struct {
BaseController
}
func (this *IndexController) Get() {
this.Html("aaaaaaa")
}
后记:有人管beego的这种嵌入方式叫做匿名组合,我没有查到相关的资料,谁要是有的话,麻烦告诉我。
Action AppHttpControllersKategoriController@store 未定义
首先,将此表单属性操作从 <form action={{ action('App\Http\Controllers\KategoriController@store') }} method="GET">
更改为 <form action={{url('getKategorie') }} method="GET">
,然后在路由文件中命名 url。我确定这就是你的问题所在。就目前而言,laravel 正在 web.php 文件中寻找该操作,但找不到它。因此添加类似 Route::get('getKategorie',[KategoriController,'store']);
的内容。您需要注意的另一件事是,您使用的是资源控制器,因此 GET http verb
仅读取索引方法而不是存储方法。存储方法与 POST http verb
一起使用。希望这能回答您的问题。
您已经使用 GET 提交数据,GET 用于检索数据。您应该使用 POST 代替 GET。查看我的代码并在您的表单和路由中使用它。
类别控制器
<?php
namespace App\Http\Controllers;
use App\Models\Kategori;
use Illuminate\Http\Request;
class KategoriController extends Controller {
// sesi BACKEND
public function __construct() {
$this->middleware('auth');
}
// sesi FRONTEND
public function index() {
$kategoris = Kategori::all();
return view('front.product',['kategoris' => $kategoris]);
}
public function indexBack() {
$kategoris = Kategori::all();
return view('back/kategori-produk/tampil',['kategoris' => $kategoris]);
}
public function create() {
//
}
public function store(Request $request) {
$this->validate($request,[
'name' => 'required',]);
$kategoris = new Kategori;
$kategoris->nama = $request->input('nama');
$kategoris->save();
return back()->with('Success','Data Saved');
}
public function show($category) {
//
}
public function edit($category) {
//
}
public function update(Request $request,$category) {
//
}
public function destroy($category) {
//
}
}
类别视图刀片
<form method="post" action="{{ route('category.store') }}">
@csrf
</form>
web.php
Route::get('','KategoriController@index')->name('category.index');
Route::get('','KategoriController@indexBack')->name('category.indexBack');
Route::get('create','KategoriController@Create')->name('category.create');
Route::post('create','KategoriController@Store')->name('category.store');
Route::get('show/{category}','KategoriController@Show')->name('category.show');
Route::get('update/{category}','KategoriController@Edit')->name('category.edit');
Route::patch('update/{category}','KategoriController@Update')->name('category.update');
Route::delete('delete/{category}','Users\UserController@Destroy')->name('user.destroy');
angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.
似乎没有问题.
我的HTML代码
<ulrole="menu" ng-controller="CounterController"> <li ng-repeat="item in messages"><a href="">{{item.name}}</a></li> </ul>
这是我的js文件.知道为什么吗?
我使用的angualr的版本是1.6.1
角度控制器代码
angular .module('myApp.counter_controller',[]) .controller('CounterController',['$scope','$filter',function($scope,$filter) { 'use strict'; $scope.messages = [{ name : 'ENG',read : false },{ name : 'JPN',{ name : 'CHI',]; $scope.setRead = function(item,$event) { $event.preventDefault(); $event.stopPropagation(); item.read = true; }; $scope.setUnread = function(item,$event) { $event.preventDefault(); $event.stopPropagation(); item.read = false; }; $scope.setReadAll = function($event) { $event.preventDefault(); $event.stopPropagation(); angular.forEach($scope.messages,function(item) { item.read = true; }); }; $scope.unseenCount = $filter('filter')($scope.messages,{ read: false }).length; $scope.$watch('messages',function(messages) { $scope.unseenCount = $filter('filter')(messages,{ read: false }).length; },true); }]);
解决方法
请看它正常工作的代码:code link
输出:Main Output
angularJS指令中的controller和controllerAs
自定义指令中还可以定义controller属性,是一个function,可以在其中定义数据和方法,可以提供给该指令的link内的方法使用。
示例的html:
<div ng-app="myApp">
<div ng-controller="firstController">
<div book-list></div>
</div>
</div>
angular.module(''myApp'',[])
.directive(''bookList'',function(){
return {
restrict:''ECAM'',
//此处定义了该指令的controller属性
controller:function($scope){
$scope.books=[
{name:''php''},
{name:''javascript''},
{name:''java''}
];
this.addBook=function(){ //或者 scope.addBook=...
alert(''test'');
}
},
controllerAs:''bookListController'', //给当前controller起个名称
template:''<ul><li ng-repeat="book in books">{{ book.name }}</li></ul>'',
replace:true,
//link中注入 bookListController ,就可以使用它的方法了
link:function(scope,iElement,iAttrs,bookListController){
iElement.on(''click'',bookListController.addBook);
}
}
})
.controller(''firstController'',[''$scope'',function($scope){
}])
执行结果:
点击则触发了link定义的点击事件:
beego 如何依赖注入mgo到controller
刚从java投向golang,觉得golang真的很有趣。beego给我感觉就像java的springmvc一样框架,强大!
言归正传,在项目尝试使用beego+mgo的时候不知道应该如何将mgo.session注入到controller。目前折衷的方法是在main初始化后存在全局变量,然后在一个baseController的prepare set进去。但是感觉这样不是我想要的,不知道是否有方法可以直接set到baseController里。新手求教,不胜感激!
目前代码大概如下:
func main() { sess := initMongoDB() defer sess.Close() models.DataSource = models.DataStore{sess} beego.Run() }
//controller type genericController struct { beego.Controller models.DataStore } func (g *genericController) Prepare(){ fmt.Println("genericController prepare") g.DataStore = models.DataSource }
//UserController func (c *UserController) Save(){ msess := c.GetMGoSession() defer msess.Close() msess.DB("test").C("user").Insert(&User{Name:"luis"}) //.. }
今天关于Beego的controller怎么用嵌入实现继承问题和beego controller的讲解已经结束,谢谢您的阅读,如果想了解更多关于Action AppHttpControllersKategoriController@store 未定义、angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.、angularJS指令中的controller和controllerAs、beego 如何依赖注入mgo到controller的相关知识,请在本站搜索。
本文标签: