zoukankan      html  css  js  c++  java
  • Laravel 入门

    Laravel被称为"全栈"式框架,因为它能够处理从网络服务到数据库管理、HTML生成的一切事情,垂直集成的web开发环境给开发者提供了更好的体验。

    1、laravel 安装

    网上很多介绍的,这里参考官方网址

    http://www.golaravel.com/laravel/docs/5.1/

    2、composer 安装

    官方网址:http://www.phpcomposer.com/5-features-to-know-about-composer-php/

    3、创建laravel站点

    composer create-project laravel/laravel your-project-name --prefer-dist

    这个命令会下载并安装一份全新的 Laravel 存放在指定的 your-project-name 的目录中。

    4、运行程序

    1)安装PHP环境,可以将项目放到/var/www/下面。

    2)如果没有php环境,可以运行以下命令

    $php artisan serve

    上述命令会启动 PHP 内建的开发服务器,要查看程序,请打开一个浏览器窗口,访问http://localhost:8000 。应该会看到默认的 Laravel 信息页面:

    5、 显示"Hello, Laravel!"

    要在 Laravel 中显示"Hello, Laravel!",需要新建一个控制器和视图。

    控制器用来接受向程序发起的请求。路由决定哪个控制器会接受到这个请求。一般情况下,每个控制器都有多个路由,对应不同的动作。动作用来提供视图中需要的数据。

    视图的作用是,以人类能看懂的格式显示数据。有一点要特别注意,数据是在控制器中获取的,而不是在视图中。视图只是把数据显示出来。默认情况下,视图使用 Blade 编写,经由 Laravel 解析后,再发送给用户。

    控制器可用控制器生成器创建,你要告诉生成器,我想要个名为"welcome"的控制器,如下所示:

    $ php artisan controller:make WelcomeController --only=index
    
    

    运行上述命令后,Laravel 会生成 app/controllers/WelcomeController.php 文件。生成文件后修改其中的 index 方法:

        public function index()
        {
            return View::make('welcome.index');
        }
    
    

    *创建视图: *

    • 在 app/views/ 目录新建文件夹 welcome 并创建文件 index.blade.php ;
    • 在 index.blade.php 文件中添加 <h1>Hello, Laravel!</h1> ;

    6、查看路由

    执行 $ php artisan routes 任务,会看到定义了所有标准的 REST 动作。输出结果中各列的意义稍后会说明。

    +--------+-----------------------------------+------------------+----------------------------+----------------+---------------+
    | Domain | URI                               | Name             | Action                     | Before Filters | After Filters |
    +--------+-----------------------------------+------------------+----------------------------+----------------+---------------+
    |        | GET|HEAD /                        |                  | WelcomeController@index    |                |               |
    |        | GET|HEAD articles                 | articles.index   | ArticlesController@index   |                |               |
    |        | GET|HEAD articles/create          | articles.create  | ArticlesController@create  |                |               |
    |        | POST articles                     | articles.store   | ArticlesController@store   |                |               |
    |        | GET|HEAD articles/{articles}      | articles.show    | ArticlesController@show    |                |               |
    |        | GET|HEAD articles/{articles}/edit | articles.edit    | ArticlesController@edit    |                |               |
    |        | PUT articles/{articles}           | articles.update  | ArticlesController@update  |                |               |
    |        | PATCH articles/{articles}         |                  | ArticlesController@update  |                |               |
    |        | DELETE articles/{articles}        | articles.destroy | ArticlesController@destroy |                |               |
    +--------+-----------------------------------+------------------+----------------------------+----------------+---------------+
    
    7、创建控制器
    

    创建名为 ArticlesController 的控制器。执行下面的命令即可:

    $ php artisan controller:make ArticlesController
    
    

    打开刚生成的 app/controllers/ArticlesController.php 文件,控制器就是一个类,继承自 BaseController。在这个 ArticlesController 类中定义了对应的资源动作。动作的作用是处理文章的 CRUD 操作。
    修改 ArticlesController.php 文件中的
        public function create()
        {
            //
        }
    
    

        public function create()
        {
            return View::make('articles.create');
        }
    
    

    在 PHP 中,方法分为 public、private 和 protected 三种,只有 public 方法才能作为控制器的动作。

    8、 首个表单

    要在模板中编写表单,可以使用"表单构造器"。Laravel 中常用的表单构造器是 Form。在 app/views/articles/create.blade.php 文件中加入以下代码:

    {{ Form::open() }}
        <p>
            {{ Form::text('title') }}
        </p>
        <p>
            {{ Form::text('text') }}
        </p>
        <p>
            {{ Form::submit('submit') }}
        </p>
    {{ Form::close() }}
    

    现在刷新页面,会看到上述代码生成的表单。在 Laravel 中编写表单就是这么简单!

    在 Form 方法的块中,Form::text 创建了两个标签和两个文本字段,一个用于文章标题,一个用于文章内容。最后,Form::submit 创建一个提交按钮。

    不过这个表单还有个问题。如果查看这个页面的源码,会发现表单 action 属性的值是 /articles/create。这就是问题所在,因为其指向的地址就是现在这个页面,而这个页面是用来显示新建文章表单的。

    要想转到其他地址,就要使用其他的地址。这个问题可使用 Form::open 方法的 url 参数解决。在 Laravel 中,用来处理新建资源表单提交数据的动作是 store,所以表单应该转向这个动作。

    修改 app/views/articles/create.blade.php 文件中的 Form::open,改成这样:

    {{ Form::open(array('url' => 'articles')) }}
    
    

    这里,我们把 url 参数的值设为 articles 。对应的地址是 /articels,默认情况下,这个表单会向这个路由发起 POST 请求。这个路由对应于 ArticlesController 控制器的 store 动作。

    表单写好了,路由也定义了,现在可以填写表单,然后点击提交按钮新建文章了。

    创建文章

    提交表单,会看到一个白屏。现在暂且不管这个错误。store 动作的作用是把新文章保存到数据库中。

    提交表单后,其中的字段以参数的形式传递给 Laravel。这些参数可以在控制器的动作中使用,完成指定的操作。要想查看这些参数的内容,可以把 store 动作改成:

        public function store()
        {
            dd(Input::all());
        }
    
    

    dd 函数为 Laravel 内置的打印输出函数,Input::all() 取得所有发出请求时传入的输入数据。

    如果现在再次提交表单,不会再看到白屏错误,而是会看到类似下面的文字:

    array (size=3)  
      '_token' => string 'plx6TrGRWfHakBlKybUzkRTH8r712JU4rWfiPTs7' (length=40)
      'title' => string 'First article!' (length=14)
      'text' => string 'This is my first article.' (length=25)
    
    

    store 动作把表单提交的参数显示出来了。不过这么做没什么用,看到了参数又怎样,什么都没发生。

    创建 Article 模型

    在 Laravel 中,模型的名字使用单数,对应的数据表名使用复数。

    创建 app/models/Article.php 并写入以下代码:

    <?php
    
    class Article extends Eloquent {
    
    }
    
    

    注意我们并没有告诉 Eloquent Article 模型会使用哪个数据库表。若没有特别指定,系统会默认自动对应名称为「类名称的小写复数形态」的数据库表。所以,在上面的例子中, Eloquent 会假设 Article 将把数据存在 articles 数据库表。

    运行迁移

    使用 Artisan CLI 的 migrate:make 命令建立迁移文件:

    $ php artisan migrate:make create_articles_table --create=articles
    
    

    迁移文件会建立在 app/database/migrations 目录下,文件名会包含时间戳,用于在执行迁移时用来决定顺序。

    app/database/migrations/20140903084339createarticlestable.php (你的迁移文件名可能有点不一样)文件的内容如下所示:

    <?php
    
    use IlluminateDatabaseSchemaBlueprint;  
    use IlluminateDatabaseMigrationsMigration;
    
    class CreateArticlesTable extends Migration {
    
        /**
         * Run the migrations.
         *
         * @return void
         */
        public function up()
        {
            Schema::create('articles', function(Blueprint $table)
            {
                $table->increments('id');
                $table->timestamps();
            });
        }
    
        /**
         * Reverse the migrations.
         *
         * @return void
         */
        public function down()
        {
            Schema::drop('articles');
        }
    
    }
    
    

    修改其中的创建代码为:

            Schema::create('articles', function(Blueprint $table)
            {
                $table->increments('id');
                $table->string('title');
                $table->text('text');
                $table->timestamps();
            });
    
    

    在这个迁移中定义了一个名为 up 的方法,在运行迁移时执行。up 方法中定义的操作都是可以通过 down 方法实现可逆的,Laravel 知道如何撤销这次迁移操作。运行迁移后,会创建 articles 表,以及一个字符串字段和文本字段。同时还会创建两个时间戳字段,用来跟踪记录的创建时间和更新时间。

    然后,使用 Artisan 命令运行迁移:

    $ php artisan migrate
    
    

    Laravel 会执行迁移操作,告诉你创建了 articles 表。

    Migration table created successfully. Migrated: 20140903084339createarticlestable

    在控制器中保存数据

    再回到 ArticlesController 控制器,我们要修改 store 动作,使用 Article 模型把数据保存到数据库中。打开 app/controllers/ArticlesController.php 文件,把 store 动作修改成这样:

        public function store()
        {
                $article = Article::create(array('title'=>Input::get('title'), 'text'=>Input::get('text')));
    
            return Redirect::route('articles.show', array($article->id));
        }
    
    

    同时在 app/models/Article.php 添加 :

    protected $fillable = array('title', 'text');  
    
    

    fillable 属性允许在动作中调用模型的 create 方法使用 title 和 text 属性。

    再次访问 http://localhost:8000/articles/create ,填写表单,还差一步就能创建文章了。

    Email:yongxo@outlook.com
  • 相关阅读:
    推荐影视
    《算法设计》一、引言:某些典型的问题
    使用google地图API
    Python导入不同文件夹下模块
    Pycharm之远程编程
    linux之scp
    Photoshop脚本之jpg转换成eps
    win7重新安装win7
    查看修改swap空间大小
    用 EasyBCD 在 Win7/8 中硬盘安装 Ubuntu
  • 原文地址:https://www.cnblogs.com/yongxo/p/5079274.html
Copyright © 2011-2022 走看看