laravel-admin简单事例

这篇博客介绍了如何在Laravel-admin中创建一个简单的频道管理功能,包括新增菜单、控制器编写、模型创建等步骤,适合初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

表:channel渠道表

在菜单中新建菜单规则路径channel/channel:

channel控制器里:

use App\Http\Controllers\Controller;
use App\Model\ChannelModel;
use Encore\Admin\Form;
use Encore\Admin\Grid;
use Encore\Admin\Layout\Content;
use Encore\Admin\Controllers\ModelForm;
use Encore\Admin\Show;

class ChannelController extends Controller
{
    use ModelForm;
    public function index(Content $content)
    {
        return $content
            ->header('Index')
            ->description('description')
            ->body($this->grid());
    }
    public function edit($id, Content $content)
    {
        return $content
            ->header('Edit')
            ->description('description')
            ->body($this->form()->edit($id));
    }
    /**
     * Create interface.
     *
     * @param Content $content
     * @return Content
     */
    public function create(Content $content)
    {
//        dump($content);exit;
        return $content
            ->header('Create')
            ->description('description')
            ->body($this->form());
    }
    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        $form = new Form(new ChannelModel);
        $form->text('name', '渠道名称');
        $form->text('number', '渠道号');
        $form->text('password', '登录密码');
        $form->password=bcrypt($form->password);
        $form->text('desc', '描述');
        $form->text('package_name', '马甲包名称');
        $form->text('price', '单价');
        $form->radio('status', '状态')->options(['0' => '不在线', '1'=> '在线'])->default('0');
        return $form;
    }
    /**
     * Show interface.
     *
     * @param mixed   $id
     * @param Content $content
     * @return Content
     */
    public function show($id, Content $content)
    {
        return $content
            ->header('Detail')
            ->description('description')
            ->body($this->detail($id));
    }
    /**
     * Make a show builder.
     *
     * @param mixed   $id
     * @return Show
     */
    protected function detail($id)
    {
        $show = new Show(ChannelModel::findOrFail($id));
        $show->id('ID');
        $show->description('问题描述');
        $show->content('回复内容');
        return $show;
    }
    protected function grid()
    {
        $grid = new Grid(new ChannelModel);
        $grid->model()->orderBy('id','desc');
        $grid->id('ID')->sortable();
        $grid->name('渠道名称');
        $grid->number('渠道号');
        $grid->password('登录密码');
        $grid->desc('描述');
        $grid->package_name('马甲包名称');
        $grid->channel_url('推广url');
        $grid->type('计费方式')->display(function ($type) {
            return $type ? '其他' : '注册';
        });
        $grid->price('价格');
        $grid->data_url('数据url');
        $grid->register_number('注册数量');
        $grid->put_number('提交数量');
        $grid->pass_number('通过数量');
        $grid->status('状态')->display(function ($status) {
            return $status ? '在线' : '不在线';
        });
        $grid->column('adminUsers.username','名字');
        $grid->created_at('创建时间')->display(function ($created_at) {
            return date("Y-m-d H:i:s",$created_at);
        });
        $grid->updated_at('修改时间')->display(function ($updated_at) {
            return date("Y-m-d H:i:s",$updated_at);
        });
        $grid->disableExport();//禁用导出数据按钮
        return $grid;
    }
}

channel模型层里:

use App\Model\AdminUsersModel as adminUsers;
use Illuminate\Database\Eloquent\Model;
class ChannelModel  extends Model
{
    protected $table = "channel";//要连接的表名称
    public $timestamps = true;
    public $dateFormat = 'U';
    // 联查admin_users表
    public function adminUsers()
    {
        return $this->belongsTo(adminUsers::class,'admin_id');
    }
}

admin_users模型:

use App\Model\ChannelModel as Channel;
use Illuminate\Database\Eloquent\Model;
class AdminUsersModel  extends Model
{
    protected $table = "admin_users";//要连接的表名称
    public function channel()
    {
        return $this->hasOne(Channel::class,'id');
    }
}

至此简单事例已完成,欢迎评价,有问题请私聊。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值