欢迎各位兄弟 发布技术文章
这里的技术是共享的
今天在在用laravel框架写一个文件上传的部分.发现路径始终配不对.但是最终还是解决了.
function caiji_list_form_submit($form, &$form_state) { $list_url
前面介绍了如何显示列表与单个文章,这一节介绍添加发布文章。首先需要有一个表单,然后需要获取表单的数据并插入到数据库,最后跳转到列表页。
Route::get('articles/create', 'ArticlesController@create');
添加 create() 方法:
这一节学习路由模型绑定(Route Model Binding)。
打开 ArticlesController.php 文件,如果仔细看代码的话,会发现我们的函数中多次出现了 $article = Article::findOrFail($id); 这一段代码。如果我们的程序能够自动找到 ID 对应的记录,并让 Laravel 自动查询,这是不是非常的棒?这就是路由模型绑定会做到的事情。
查看程序目录,我们会发现一个 app/Providers 文件夹,这里面的文件定义了 Laravel 如何创建或者启动组件。app/Providers/RouteServiceProvider.php 就是定义程序路由如何启动的。
通过前面的代码已经可以完成文章的发布了,但是发布完之后没有给出任何的提示,直接跳转到了列表页,这样的体验不太好,我们还是要给出一些返回信息的。这一节主要就是介绍这个,有两种方法,下面分别列出来:
首先修改 ArticlesController 中的 store() 方法:
public function store(ArticleRequest $request){
Auth::user()->articles()->create($request->all());
\Session::flash('flash_message', '文章发布成功');
return redirect('articles');
}
当我们创建一个博客程序的时候,我们当然需要能够撰写博客并发布,另外还要给出一种来关联它们的方法。我们可以使用查找功能,但查找功能留到以后再做,这里先介绍使用标签的方式。比如我们给一篇博客添加了标签“PHP”,那么浏览这篇博客的用户可能会想浏览所有带有该标签的博客,这应该如何实现呢?换句话说,应该如何设计数据库与Eloquent模型呢?这就是这一节所要介绍的多对多关系。
在介绍前可以先复习以下第十四节介绍的《Eloquent关系》,其中介绍了一对一与一对多的关系。
打开 /app/Article.php ,添加多对多关系方法:
public function tags(){
前一节学习了多对多关系模型,已经如何在Eloquent模型中表述它,现在我们来介绍通过界面选择来完成。
首先打开 /resources/views/articles/_form.blade.php 文件,在提交按钮的前面添加下面代码:
<div class="form-group">
{!! Form::label('tags', 'Tags:') !!}
{!! Form::select('tags', $tags, null, ['class' => 'form-control', 'multiple']) !!}
</div>
看过前一节的应该知道,当时只做了发布博客时添加标签的操作,而当保存修改时,修改标签的操作并没有实现,所以这一节来接着完成前一节的工作,修改博客时同步标签。
首先我们把 store() 方法中添加标签的那段代码拷贝到 update() 方法中:
前一节已经讲完了修改文章时同步标签的功能,但是我们选择标签使用的是多选下拉框,这个在实际使用的时候是很不方便的。比如我们的标签很多的时候,可能会遇到下面的情况:选择的时候忘记了按 Ctrl 键,导致之前所有选中的项都变成未选中状态,需要重新选择,这是一件很让人头疼的事。这一节就教大家花费5分钟的时间,利用一个小插件来解决此问题。
我们这里使用的 jQuery 插件叫做 Select2 。首先可以到它的示例页面来看一下其中的“Multiple select boxes”这一项,这就是我们要使用的,这个显然比直接使用多选下拉框要高大上的多。
首先复制 Select2 提供的 CDN :