GVKun编程网logo

Beego的controller怎么用嵌入实现继承问题(beego controller)

2

对于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)

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 未定义

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”的控制器未注册.

angularjs – 错误:[$controller:ctrlreg]名称为“CounterController”的控制器未注册.

当我在Chrome中按F12时,我看到了这个错误.
似乎没有问题.

我的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

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

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的相关知识,请在本站搜索。

本文标签: