目录
(1)在Index控制器中导入Category模型的命名空间
前言
在学习Laravel框架的过程中,我遇到了一些挑战,但也因此取得了很大的成长。通过学习Laravel框架,我对Web开发有了更全面的理解,掌握了一些常用的开发技巧和工具。我也意识到了良好的代码规范和结构对于项目的重要性,因此在编写代码时更加注重代码的可读性和可维护性。我相信这些经验和知识将对我今后的学习和工作有很大的帮助。
一.内容管理系统(下)
1.栏目导航
(1)在Index控制器中导入Category模型的命名空间
use App\Category;
位于app/Http/Controllers目录下的IndexController.php件开头处添加以上代码行。
(2)在index控制器中navBar()的方法中,查询栏目记录,并在index()方法中调用navBar()方法
public function index()
{
$this->navBar();
return view('index');
}
public function navBar(){
$data = Category::orderBy('sort', 'asc')->get()->toArray();
$category = $sub = [];
foreach($data as $k=>$v){
if ($v['pid'] != 0) {
$sub[$v['id']] = $v;
}
}
foreach($data as $key=>$val){
if ($val['pid'] == 0) {
$category[$key] = $val;
}
foreach($sub as $subv) {
if ($subv['pid'] == $val['id']) {
$category[$key]['sub'][] = $subv;
}
}
}
return view()->share('category', $category);
}
在navBar()方法中,首先从Category模型中按照sort字段升序获取所有的分类数据,并将其转化为数组。然后,根据分类的`pid`字段判断是否为顶级分类或子分类,并将其分别存储在$category和$sub数组中。最后,将分类数据绑定到视图共享变量category中。
(3)在header.blade.php中输出栏目列表
<!-- 栏目列表 -->
<nav class="navbar navbar-expand-md navbar-dark">
<div class="container">
<div></div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-expanded="false" aria-controls="navbarSupportedContent" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link" href="/index.php">首页</a>
</li>
@foreach($category as $v)
@if(isset($v['sub']))
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
{{$v['name']}}
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
@foreach($v['sub'] as $val)
<a class="dropdown-item" href="{{url('lists', ['id' => $val['id']] )}}">{{$val['name']}}</a>
@endforeach
</div>
</li>
@else
<li class="nav-item">
<a class="nav-link" href="{{url('lists', ['id' => $v['id']] )}}">{{$v['name']}}</a>
</li>
@endif
@endforeach
</ul>
</div>
</div>
</nav>
</div>
- 这段代码是一个栏目列表的导航栏,使用了Bootstrap框架的样式。导航栏位于一个容器内,并包含了一个折叠按钮,用于在小屏幕设备上切换导航栏的可见性。导航栏使用无序列表来显示栏目,栏目的内容是通过循环遍历$category数组来生成的。
- 对于每个栏目,根据是否存在子栏目进行不同的处理。如果存在子栏目,则将栏目名称设置为一个下拉菜单的链接,点击后可以展开子栏目的内容。子栏目的内容同样是通过循环遍历$v['sub']数组来生成的。如果不存在子栏目,则直接将栏目名称设置为一个普通的链接。
- 每个栏目和子栏目的链接都使用Laravel的URL生成函数url()来生成,参数中包含栏目的ID信息,用于在点击链接时跳转到对应的列表页面。
- 整个导航栏使用了Bootstrap的样式类来进行样式定义,以实现响应式布局和交互效果。
效果图
二. Laravel框架的学习心得
1.感受
在学习Laravel框架的过程中,我感受到了它的强大和便利。Laravel提供了很多开箱即用的功能和工具,使得开发变得简单和高效。它的文档和社区也非常活跃,能够解决我遇到的各种问题。通过学习Laravel,我对Web开发的理解更加全面,也有了更多的实践经验。
2.学习过程
我首先通过阅读Laravel的官方文档开始学习,文档非常详细,对于初学者来说很友好。我按照文档的指引,通过安装Laravel并创建一个简单的项目进行实践。在实践中,我学习了Laravel的路由、控制器、模型等基本概念和用法,并了解了Laravel的数据库操作、表单验证、用户认证等高级功能。
除了官方文档,我还参考了一些在线教程和视频教程,这些教程通常涵盖了更多的实际案例和最佳实践。通过跟随教程的步骤,我能够更好地理解Laravel的各种功能和用法。
在学习的过程中,我也通过阅读Laravel的源代码来深入理解它的实现原理和设计思想。这让我对Laravel框架有了更深入的认识,并且能够更好地利用它进行开发。
3.特点和优势
Laravel框架有很多特点和优势,使得它成为了Web开发的首选框架之一。
首先,Laravel提供了很多开箱即用的功能和工具,如路由系统、ORM、模板引擎等。这些功能能够极大地提高开发效率,减少开发者的工作量。
其次,Laravel具有简洁、优雅的代码风格,使得代码易于阅读和维护。Laravel遵循了面向对象的设计原则,使用了很多设计模式和最佳实践,使得代码结构清晰,易于扩展和重用。
再次,Laravel具有很好的可扩展性和灵活性。它支持各种扩展包和插件,可以方便地集成第三方库和服务。同时,Laravel提供了很多扩展点和钩子,开发者可以根据自己的需求进行定制。
最后,Laravel拥有一个活跃的社区和庞大的生态系统。社区成员提供了很多有用的扩展包、教程和解决方案,可以帮助开发者解决各种问题。
4.应用场景
Laravel框架适用于各种规模的Web应用程序开发,无论是小型网站还是大型企业级应用都可以使用Laravel进行开发。
对于小型网站,Laravel提供了简洁、易用的功能和工具,能够快速搭建一个功能完善的网站。同时,Laravel的模板引擎和前端工具也使得网站的界面设计和交互效果更加美观和流畅。
对于大型企业级应用,Laravel的可扩展性和灵活性是非常有价值的。开发者可以根据项目的需求进行定制和扩展,从而满足复杂的业务逻辑和高并发的访问需求。同时,Laravel的ORM和数据库操作功能也能够处理大量的数据和复杂的查询。
总结
学习Laravel框架是一次很有收获的经历。通过学习和实践,我深入了解了Laravel框架的特性和使用方法,对于构建Web应用程序有了更深入的理解。我相信在以后的开发工作中,Laravel框架会成为我不可或缺的工具。