快速开始
<h1>快速开始</h1>
<p>在日常开发中,我们可以用代码生成器一键生成增删改查页面代码,非常的方便快捷。</p>
<p>下面将会给大家介绍代码生成器的使用方法,以及一个增删改查页面的基本构成。通过学习下面的内容将可以帮助大家快速理解这个系统的基本使用方法。</p>
<h2>代码生成器</h2>
<h3>创建数据表</h3>
<p>安装完<code>Laravel</code>之后会内置一个<code>users</code>表的<code>migration</code>文件(如果不了解<code>migration</code>文件作用,请参考文档<a href="https://learnku.com/docs/laravel/7.x/migrations/7496">数据库迁移</a>),文件路径为<code>database/migrations/2014_10_12_000000_create_users_table.php</code>。</p>
<p>然后我们运行以下命令,在<code>MySQL</code>中创建这个数据表</p>
<pre><code class="language-php">php artisan migrate</code></pre>
<p>运行完之后可以看到数据库中已经多了一个<code>users</code>表,结构如下</p>
<pre><code class="language-sql">CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
`remember_token` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci</code></pre>
<h3>一键生成增删改查页面</h3>
<p>> {tip} 如果你的开发环境不是<code>windows</code>,请注意要给项目目录设置读写权限,否则可能出现无法生成代码的情况。</p>
<p><strong>1.</strong>首先打开地址<code>http://你的域名/admin/helpers/scaffold</code>,进入代码生成器页面;</p>
<p><strong>2.</strong>由于前面已经创建好了数据表,所以这里我们可以直接通过页面左上角的第二个下拉选框选择<code>users</code>表,选择之后会自动填充字段信息,效果如下</p>
<p><a href="{{public}}/assets/img/screenshots/quick-start-1.png" target="_blank">
<img src="{{public}}/assets/img/screenshots/quick-start-1.png" style="box-shadow:0 1px 6px 1px rgba(0, 0, 0, 0.12)" width="100%" >
</a></p>
<p><strong>3.</strong>修改模型名称为<code>App\User</code></p>
<p><strong>4.</strong>由于<code>migration</code>文件、数据表、以及模型文件(使用内置的<code>App\User</code>即可)都已经有了,所以此处我们可以把这三个选项给去掉</p>
<p><strong>5.</strong>填写字段翻译</p>
<p>最后呈现效果如下</p>
<p><a href="{{public}}/assets/img/screenshots/quick-start-2.png" target="_blank">
<img src="{{public}}/assets/img/screenshots/quick-start-2.png" style="box-shadow:0 1px 6px 1px rgba(0, 0, 0, 0.12)" width="100%" >
</a></p>
<p>最后点击创建按钮即可,创建的文件如下</p>
<pre><code>app/Admin
├── Controllers
│ └── UserController.php # 控制器
└── Repositories # 数据仓库
│ └── User.php
resouces/lang/{当前语言}
└── user.php # 语言包</code></pre>
<h3>添加路由配置</h3>
<p>打开路由配置文件<code>app/Admin/routes.php</code>,往里面添加一行:</p>
<pre><code>$router-&gt;resource('users', 'UserController');</code></pre>
<p>到此,就可以打开浏览器输入地址<code>http://你的域名/admin/users</code>访问刚刚创建完的页面了</p>
<h3>添加左侧菜单</h3>
<p>打开<code>http://你的域名/admin/auth/menu</code>,添加对应的menu, 然后就能在后台管理页面的左侧边栏看到用户管理页面的链接入口了。</p>
<p>> 其中<code>uri</code>填写不包含路由前缀的的路径部分,比如完整路径是<code>http://你的域名/admin/demo/users</code>, 那么就填<code>demo/users</code>,如果要添加外部链接,只要填写完整的url即可,比如<code>http://dcat-admin.org/</code>.</p>
<h3>菜单翻译</h3>
<p>在您的语言文件的<code>menu_titles</code>索引中追加菜单标题。
例如“工作单位”标题:</p>
<p>在<code>resources/lang/{当前语言}/menu.php</code>中</p>
<pre><code class="language-php">...
// 用_小写并用_替换空格
'titles' =&gt; [
'work_units' =&gt; 'Unidades de trabajo'
],</code></pre>
<h3>完成</h3>
<p>这样一个简单的<code>CURD</code>功能就构建完成了,剩下的工作就是深度构建数据表格和表单了,打开 <code>app/Admin/Contollers/UserController.php</code>,找到<code>form()</code>和<code>grid()</code>方法,然添加构建代码。
更多详细使用请查看<a href="model-grid.md">数据表格</a>和<a href="model-form.md">数据表单</a>。</p>
<h2>增删改查功能简易说明</h2>
<p>为了便于大家理解增删改查功能的基本用法,下面将给大家简单介绍前面使用生成器生成的代码。</p>
<h3>控制器</h3>
<p><code>Dcat Admin</code>的增删改查页面代码是非常简洁和易懂的,对开发者非常的友好,只需极少的代码即可构建出一个功能完善的后台系统,并且非常简单灵活和易于扩展。</p>
<p>打开<code>app/Admin/Controllers/UserController.php</code>可以看到如下代码</p>
<pre><code class="language-php">&lt;?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\User;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Show;
use Dcat\Admin\Http\Controllers\AdminController;
class UserController extends AdminController
{
/**
* Make a grid builder.
*
* @return Grid
*/
protected function grid()
{
return Grid::make(new User(), function (Grid $grid) {
// 这里的字段会自动使用翻译文件
$grid-&gt;column('id')-&gt;sortable();
$grid-&gt;column('name');
$grid-&gt;column('email');
$grid-&gt;column('email_verified_at');
$grid-&gt;column('password');
$grid-&gt;column('remember_token');
$grid-&gt;column('created_at');
$grid-&gt;column('updated_at')-&gt;sortable();
$grid-&gt;filter(function (Grid\Filter $filter) {
$filter-&gt;equal('id');
});
});
}
/**
* Make a show builder.
*
* @param mixed $id
*
* @return Show
*/
protected function detail($id)
{
return Show::make($id, new User(), function (Show $show) {
// 这里的字段会自动使用翻译文件
$show-&gt;field('id');
$show-&gt;field('name');
$show-&gt;field('email');
$show-&gt;field('email_verified_at');
$show-&gt;field('password');
$show-&gt;field('remember_token');
$show-&gt;field('created_at');
$show-&gt;field('updated_at');
});
}
/**
* Make a form builder.
*
* @return Form
*/
protected function form()
{
return Form::make(new User(), function (Form $form) {
// 这里的字段会自动使用翻译文件
$form-&gt;display('id');
$form-&gt;text('name');
$form-&gt;text('email');
$form-&gt;text('email_verified_at');
$form-&gt;text('password');
$form-&gt;text('remember_token');
$form-&gt;display('created_at');
$form-&gt;display('updated_at');
});
}
}</code></pre>
<h3>数据仓库</h3>
<p><code>Dcat Admin</code> 构建页面并不直接依赖于<code>Model</code>,而是引入了数据仓库作为中间层,让页面的构建不再与数据的读写产生强耦合关系。</p>
<p>数据仓库是<code>Dcat Admin</code>中对数据增删改查操作接口的具体实现,更详细用法请参考<a href="model-repository.md">数据仓库</a>。</p>
<p>> {tip} 如果你的数据来自<code>MySQL</code>,那么你也可以直接使用<code>Model</code>实例,底层会自动把<code>Model</code>转化为数据仓库实例。这里为了便于大家理解其中的概念,所以创建了数据仓库文件。</p>
<p>我们打开刚刚生成的文件<code>app/Admin/Repositories/User.php</code>,可以看到只有如下内容,非常简单</p>
<pre><code class="language-php">&lt;?php
namespace App\Admin\Repositories;
use Dcat\Admin\Repositories\EloquentRepository;
use App\User as UserModel;
class User extends EloquentRepository
{
protected $eloquentClass = UserModel::class;
}</code></pre>
<h3>语言包</h3>
<p>每个控制器都可以生成自己对应的语言包,并且<a href="model-grid.md">数据表格</a>、<a href="model-form.md">数据表单</a>和<a href="model-show.md">数据详情</a>功能都会自动读取里面的翻译。</p>
<p>下面我们打开<code>UserController</code>对应的语言包文件<code>resouces/lang/{当前语言}/user.php</code></p>
<pre><code class="language-php">&lt;?php
return [
// labels是自定义标签翻译
'labels' =&gt; [
// 这个是页面 title 翻译
'User' =&gt; '用户',
],
// 表字段翻译
'fields' =&gt; [
'name' =&gt; '名称',
'email' =&gt; '邮箱',
'email_verified_at' =&gt; '验证时间',
'password' =&gt; '密码',
'remember_token' =&gt; 'remember_token',
],
'options' =&gt; [
],
];
</code></pre>