Laravel 4 系列入门教程(二)【最适合中国人的Laravel教程】

2014-10-2   /   阅读数:67940   /   分类: Laravel

向 Laravel 4 tutorial – simple website with backend – Part 2 致敬,本篇教程部分内容翻译自此文章。

每一个教程完成,我将会git commit一次。

示例代码见 https://github.com/johnlui/Learn-Laravel-4

大家在任何地方卡住,最快捷的解决方式就是去看我的示例代码。

学习进入深水区,我在本篇教程中将重点讲解视图常用规则,命名空间(重难点),和路由(难点)。


1. 视图分离与嵌套

在 learnlaravel 文件夹下运行命令:

php artisan generate:view admin._layouts.default


这时候generator插件帮我们创建了 app/views/admin/_layouts/default.blade.php 文件,将内容修改为:

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>Learn Laravel 4</title>

  @include('admin._partials.assets')

</head>
<body>
<div class="container">
  <div class="navbar navbar-inverse navbar-fixed-top">
  <div class="navbar-inner">
    <div class="container">
      <a class="brand" href="{{ URL::route('admin.pages.index') }}">Learn Laravel 4</a>

      @include('admin._partials.navigation')
      
    </div>
  </div>
</div>
 
<hr>

  @yield('main')

</div>
</body>
</html>

这就是视图文件,MVC中的V。视图需要仔细讲一下。


views文件夹为视图文件夹,视图文件夹可以嵌套,就像我上面一样创建了admin/_layout嵌套文件夹,在里面创建了一个叫default.blade.php的文件,那么以后我们在Laravel内任何地方要用到这个视图的时候,他就叫admin._layouts.default。

我们看到,上面代码的第七行是“@include('admin._partials.assets')”,根据上面我们刚刚了解的知识,这表示载入了另外一个文件。blade是Laravel的模板引擎,此处的 @include 表示直接把那个文件的所有代码带入进来放到这里,变成当前视图的一部分。

注意看第25行“@yield('main')”,这表示什么呢?这个有点复杂,我们稍后再讲。


2. 权限验证

Laravel支持标准HTTP认证,但是在此处我们需要构建blog系统,所以我们将编写完善的管理员登陆系统,从页面登录。

用命令行创建 app/views/admin/auth/login.blade.php文件,代码如下:

@extends('admin._layouts.default')

@section('main')

  <div id="login" class="login">

    {{ Form::open() }}

      @if ($errors->has('login'))

        <div class="alert alert-error">{{ $errors->first('login', ':message') }}</div>
      
      @endif

      <div class="control-group">
        
        {{ Form::label('email', 'Email') }}
        
        <div class="controls">
          
          {{ Form::text('email') }}
        
        </div>
      </div>

      <div class="control-group">
        
        {{ Form::label('password', 'Password') }}
        
        <div class="controls">
          
          {{ Form::password('password') }}
        
        </div>
      </div>

      <div class="form-actions">
        
        {{ Form::submit('Login', array('class' => 'btn btn-inverse btn-login')) }}
      
      </div>

    {{ Form::close() }}
  
  </div>

@stop

大家应该注意到了前两行:

@extends('admin._layouts.default')
@section('main')

这代表什么?实际上,以后我们会了解到,在controller中调用view的时候,调用的只是这个login.blade.php文件,第一行表示,此视图是admin._layouts.default的子视图,这时blade引擎会把这个视图也载入进来,怎么组装呢?这时候下面那个@section('main')就该出场了,被它包裹的代码将会直接放到admin._layouts.default中的@yield('main')中。section和yield可以任意搭配,只要两个视图之间有调用关系,他们就可以这样用,非常灵活。


写到这里大家可能有个疑问,为什么示例代码里空行那么多?这一点就是个人经验了。blade引擎的所有标签都会在视图编译时用正则处理,引擎本身有一个问题,算不上bug,就是换行符会被处理掉,导致前后行和这一行都紧紧地挤在一起,在前端浏览器中“查看源代码”时,比较不清晰,前后加上空行可以解决这个问题。当然这可能是一个自动的“压缩”特性,不再深入讨论。


增加控制器文件app/controllers/admin/AuthController.php,这时候有人就说了,这我知道,哈哈,运行

“php artisan generate:controller admin.AuthController”

这个想法是对的,但你运行一下试试?会直接在app/controllers目录下创建一个“admin.AuthController.php”文件,有人又说,那我用“admin/AuthController”总行了吧,你试一下?也不行。所以我们要先在 app/controllers 下手动创建 admin 文件夹,这时候,再命令行输入:

php artisan generate:controller admin/AuthController

这样就可以了。接下来改写 AuthController.php 的内容为:

<?php

namespace App\Controllers\Admin;

use Auth, BaseController, Form, Input, Redirect, Sentry, View;

class AuthController extends BaseController {

  /**
   * 显示登录页面
   * @return View
   */
  public function getLogin()
  {
    return View::make('admin.auth.login');
  }

  /**
   * POST 登录验证
   * @return Redirect
   */
  public function postLogin()
  {
    $credentials = array(
      'email'    => Input::get('email'),
      'password' => Input::get('password')
    );

    try
    {
      $user = Sentry::authenticate($credentials, false);

      if ($user)
      {
        return Redirect::route('admin.pages.index');
      }
    }
    catch(\Exception $e)
    {
      return Redirect::route('admin.login')->withErrors(array('login' => $e->getMessage()));
    }
  }

  /**
   * 注销
   * @return Redirect
   */
  public function getLogout()
  {
    Sentry::logout();

    return Redirect::route('admin.login');
  }

}

这就是我们登录、注销的控制器,MVC中的C。接下来我将讲解命名空间,这是Laravel的基础,或者说是composer的基础,是整个Laravel教程中的重点、难点,希望大家锱铢必较,任何不懂都不要放过。可以到phphub论坛或者golaravel论坛相应帖子下面提问,或者直接发帖提问。


我们首先观察这个文件的位置,它位于 app/controllers/admin  目录下,这有什么不同呢?在其他框架如 CI 中,子文件夹直接加上文件夹名就可以直接调用到了,虽然最多只能有一层。而Laravel没有这么简单,涉及到了PHP的命名空间。


1. composer 支持 PSR-0 及 PSR-4 标准,标准规定 PHP 包以命名空间为区分,向外提供服务,所有暴露出来的类都应该在 \作者名\包名 命名空间下,例如 \lui\MFFC\Mail 类。这样,哪怕是名称一样的包只要是不同作者也可以在 https://packagist.org/ 上共存,供大家使用。

2. 命名空间可以类比成 Linux 系统中的 目录,在任何目录下都可以直接使用文件名打开当前目录下的所有文件和可执行程序,如果需要打开其他目录下的文件,就需要使用绝对路径或者相对路径。

3. 大家可能在许多其他教程中见到过controller头部没有 namesapce 申明,更没有那一堆的 use xxx,像这个文件 https://github.com/cecoo/laravel4demo/blob/master/app/controllers /BlogController.php。这个文件在第8行直接使用了 Blog 这个类,这是为什么呢?

因为他们都已经在 learnlaravel 这个 composer 应用的配置文件中声明为自动加载了,而他们没有在顶部声明他们所在的命名空间,这样就会被自动加为顶级命名空间。这个配置文件是 composer.json,对象配置项为autoload 下的 classmap 项。这个声明会让 Composer 在生成自动载入文件的时候,自动扫描该文件下所有的类以及所有子文件夹中的类,只要没有声明特定的命名空间,将会被自动加载为顶级空间。【之前表述有误,特此更正!】

关于命名空间更多详情,可以参考 【PHP 命名空间 入门】


OK,到目前为止我们的MVC三元素已经集齐了,那接下来该做什么了呢?配置路由。这里的路由并不是家里用的无线路由 :-D,而是 用户请求的URL到控制器某个方法的转换,function是PHP中代码段的最小单位,所以用户请求的一个路径,如 http://ooxx.com/fuck/me ,这条URL打给路由之后,路由就会去解析,应该调用哪个function,最终返回结果给用户。

Laravel的路由采用闭包的方式返回结果,在 app/routes.php 中增加下列内容:

Route::get('admin/logout', array('as' => 'admin.logout', 'uses' => 'App\Controllers\Admin\AuthController@getLogout'));
Route::get('admin/login', array('as' => 'admin.login', 'uses' => 'App\Controllers\Admin\AuthController@getLogin'));
Route::post('admin/login', array('as' => 'admin.login.post', 'uses' => 'App\Controllers\Admin\AuthController@postLogin'));

Route::group(array('prefix' => 'admin', 'before' => 'auth.admin'), function()
{
    Route::any('/', 'App\Controllers\Admin\PagesController@index');
    Route::resource('articles', 'App\Controllers\Admin\ArticlesController');
    Route::resource('pages', 'App\Controllers\Admin\PagesController');
});


前三条的意思是hold住两个get请求和一个post请求,下面是一个路由组,规定了一个前缀admin,增加了一个过滤器,auth.admin,内部有一个能同时适应get和post请求的‘/’路径,其完整路径是 http://ooxx.com/admin/。剩下的两个资源控制器本质上只是一种简写,URL和控制器类中的方法名的对应表见 资源控制器

上面说的那个过滤器 auth.admin,是Laravel提供的一个请求过滤器,这个文件就在路由文件的旁边,app/filters.php,在文件末尾增加:

Route::filter('auth.admin', function()
{
	if ( ! Sentry::check()) {
		return Redirect::route('admin.login');
	}
});

这样我们的权限验证就完成了。上面的代码意思是,在进入这个路由组中的任何一条路由之前,会先过一遍 auth.admin这个filter,这个filter会调用Sentry::check(),如果为false,将会进入if代码块,将用户的请求跳转到 命名路由‘admin.login’,命名路由文档从这个命名路由的名称大家也能看出来,就是跟访客说:傻逼,干啥呢,登录去~

这里的“命名路由”功能是为了模仿 Ruby On Rails 的 “link_to”到对象 的路由绑定功能,无奈PHP的上传即部署无守护进程的特性,使得我们没法维护一个全量代码的路由表,没法像Rails那样实现 资源路由-资源对象-路由调用 三者绑定的功能,只能搞出一个半成品命名路由,人为地解决了当调整 /people 到 /human 时,要求名称改变而功能不变,同时要求代码自适应的需求。


这时候,我们就可以尝试访问我们的项目了。推荐配置Apache将一个端口指向learnlaravel这个项目的public目录下,即项目通过 http://127.0.0.1:8080 这样的地址访问,十分不建议从子文件夹访问。如果你不会,可以运行

php artisan serve

启动PHP5.4的内建HTTP服务器。地址将会是 http://localhost:8000,注意此处 127.0.0.1 不可以访问。


下面,我们在浏览器中访问 /admin,注意URL会自动跳转到 /admin/login,这说明我们的filter起作用了,但你可能得到以下页面

QQ20141003-1.jpg


这说明代码出错了。接下来我们修改 app/config/app.php 第一项为:

'debug' => true,

刷新页面,错误提示出来了!有没有感觉Laravel4.2的错误提示很好看啊,确实不错,但我觉得没有4.1之前的好看 :-D。你会得到如下错误:


QQ20141003-2.png


说“App\Controllers\Admin\AuthController”这个类未找到,这是为什么呢?这个文件明明有啊。

这就涉及到了另一个问题,Laravel 中的 autoload 问题。这个类文件是存在的,而且顶部也声明了它所在的命名空间,还剩下最后一步:让 Laravel 知道。命令行运行:

composer dump-autoload

然后刷新页面,你会得到如下错误:

View [admin._partials.assets] not found. 

这是为什么呢?因为我们还没建立这个文件o(╯□╰)o。建立一个空文件即可,如果是用generator建的话,别忘了把里面默认的内容删掉哦。再刷新页面,如果还有问题,我相信这个问题你可以自己解决。

若手动建立相应的 view 文件后 Laravel 还是提示该文件未找到,可以尝试清空页面文件缓存,在 app/storage/views,清空该文件夹即可。


OK,一个丑的一逼的页面出现了,为什么它这么丑?(鸽子为什么这么大?)因为我们没有引入任何css和js文件,甚至连导航栏的html都不完整。这不要紧,来,按照我github上的代码,自己复制到相应文件中吧。另外,非常重要的一点,把我的项目中的public文件下的 js 和 css 两个文件夹完全复制到你们的public文件夹中。


再刷新,如果你看到以下页面,说明你成功了!

QQ20141003-2.jpg


3. 尝试登录

用seed新增一名管理员,顺便新增一个管理员组。新建 app/database/seeds/SentrySeeder.php,内容为:

<?php

class SentrySeeder extends Seeder {

  public function run()
  {
    DB::table('users')->delete();
    DB::table('groups')->delete();
    DB::table('users_groups')->delete();
 
    Sentry::getUserProvider()->create(array(
      'email'      => 'oo@xx.com',
      'password'   => "ooxx",
      'first_name' => 'OO',
      'last_name'  => 'XX',
      'activated'  => 1,
    ));
 
    Sentry::getGroupProvider()->create(array(
      'name'        => 'Admin',
      'permissions' => ['admin' => 1],
    ));
 
    // 将用户加入用户组
    $adminUser  = Sentry::getUserProvider()->findByLogin('oo@xx.com');
    $adminGroup = Sentry::getGroupProvider()->findByName('Admin');
    $adminUser->addGroup($adminGroup);
  }
}


给 app/database/seeds/DatabaseSeeder.php 新增一行:

$this->call('SentrySeeder');

然后运行:

php artisan db:seed

成功以后,进数据库就会发现,users、groups、users_groups表均新增了一行。但是,articles和pages表也分别新增了10行,对,seed就是这么蠢萌o(╯□╰)o。


让我们来尝试登录!如果你得到:

Class App\Controllers\Admin\PagesController does not exist


这说明你成功了!


接下来做什么?Laravel 4 系列入门教程(三)

WRITTEN BY

avatar
标签: PHP Laravel

评论:

HOOLOO
2015-01-27 17:18
我知道为什么出错了。
在vendor/composer/autoload_classmap.php文件中是这样写的:'App\\Controllers\\Admin\\AuthController' => $baseDir . '/app/controllers/admin/AuthController.php', 。

而在AuthController.php中是这样写的: namespace App\Controller\Admin;

Controller 和 Controllers的区别。

当然会找不到。
qu
2015-01-26 12:23
博主,我按您说的把您public下的js,css都复制到我自己的pubilc文件夹下,但是刷新网页格式都没有变化,而且汉字还出现乱码,请问是哪里出了问题呢?
JohnLui
2015-01-26 15:01
@qu:我怎么知道
quu
2015-01-25 23:02
博主您好:我在调试中出现
Maximum function nesting level of '800' reached, aborting!的问题。
位置是Open: E:\wamp\www\laravel\vendor\symfony\http-foundation\Symfony\Component\HttpFoundation\ParameterBag.php
JohnLui
2015-01-26 15:01
@quu:路由里面写了递归?
HOOLOO
2015-01-22 18:33
访问 admin 会跳到admin/login/但是依然提醒AuthController does not exit.
现在2015年1月份了。
这个问题咋办啊。
JohnLui
2015-01-22 20:37
@HOOLOO:那个文件是否存在?
HOOLOO
2015-01-23 11:01
@JohnLui:存在的。
能讲下composer dump-autoload这个会做哪些操作吗?不行我就调试下看是不是少东西。
JohnLui
2015-01-23 11:53
@HOOLOO:会编译 composer.json 里的所有自动载入配置,放入 vendor/composer 目录。
HOOLOO
2015-01-23 12:10
@JohnLui:也就是说AuthController应该会出现在vendor/composer目录里了?
HOOLOO
2015-01-23 12:13
@JohnLui:vendor/composer/autoload_classmap.php文件里有

    'App\\Controller\\Admin\\AuthController' => $baseDir . '/app/controllers/admin/AuthController.php',
    'Article' => $baseDir . '/app/models/Article.php',
    'ArticleTableSeeder' => $baseDir . '/app/database/seeds/ArticleTableSeeder.php',
    'BaseController' => $baseDir . '/app/controllers/BaseController.php',
ixiaodai
2015-01-21 15:31
Route [admin.-++20] not defined.
第一次做没遇见这错误,第二次重做却粗现,而么法解决了。。
JohnLui
2015-01-21 18:09
@ixiaodai:贴一下完整的路由代码吧
ixiaodai
2015-01-22 09:03
@JohnLui:第二遍做我是纯手打的,有这错误以后我有把原代码复制了来还是没有效果
还有过滤器使用失败,所以我删掉了'before' => 'auth.admin'
Route::get('admin/logout', array('as' => 'admin.logout', 'uses' => 'App\Controllers\Admin\AuthController@getLogout'));
Route::get('admin/login', array('as' => 'admin.login', 'uses' => 'App\Controllers\Admin\AuthController@getLogin'));
Route::post('admin/login', array('as' => 'admin.login.post', 'uses' => 'App\Controllers\Admin\AuthController@postLogin'));

Route::group(array('prefix' => 'admin'),function()
{
    Route::any('/', 'App\Controllers\Admin\PagesController@index');
    Route::resource('articles', 'App\Controllers\Admin\ArticlesController');
    Route::resource('pages', 'App\Controllers\Admin\PagesController');
});
JohnLui
2015-01-22 10:43
@ixiaodai:看起来没有问题
ixiaodai
2015-01-22 10:49
@JohnLui:难道是之前手打的什么地方出错了,昨天就有个错误是因为这个。难道还要重新来一遍
如果真是因为什么地方打错了就蛋疼了。
Shocker
2015-01-15 17:06
博主,到View [admin._partials.navigation] not found. (View: E:\windows\phpStudy\WWW\learnlaravel\app\views\admin\_layouts\default.blade.php) (View: E:\windows\phpStudy\WWW\learnlaravel\app\views\admin\_layouts\default.blade.php)这一步时,我在\learnlaravel\app\views\admin\_partials目录下添加了assets.blade.php这个文件,刷新调试页面仍然显示同样的信息,这是为什么
JohnLui
2015-01-15 17:24
@Shocker:可以尝试清空页面缓存,在 app/storage/views,删掉里面所有的文件。
Shocker
2015-01-15 21:55
@JohnLui:是我太粗心了,之后刷新的是admin._partials.navigation这个文件,看成assets了,还是感谢你了,博主
Specia_Lee
2015-01-14 11:37
namespace App\Controllers\Admin;

use Auth, BaseController, Form, Input, Redirect, Sentry, View;//?????????这里为什么我的都找不到它们的来源,还有下面的View::make也找不到????????楼主求解!!!!

class AuthController extends BaseController {

  /**
   * 显示登录页面
   * @return View
   */
  public function getLogin()
  {
    return View::make('admin.auth.login');
  }
JohnLui
2015-01-14 12:40
@Specia_Lee:找不到是指你找不到还是程序报了错?
dawn
2015-01-12 18:16
@JohnLui
     我遇到的问题如下:
我按照帖子里说的 在views下创建了 admin文件夹,在admin下 包含了 auth 和 _layouts文件夹,分别放着login.blade.php 和 default.blade.php
我在login.blade.php里调用@extends('admin._layouts.default')时,页面报错,说找不到admin._layouts.default,如果我吧auth放到admin同级目录 就没有此问题了!但是又会出现其他的错误,laravel的模板继承调用,之间存在目录的级别关系吗?
dawn
2015-01-13 13:55
@dawn:我找到问题了,我是在Laravel中文官网帖子下看到的这个帖子,里面使用命令创建admin._layouts.default模板文件时,default写成了defaut,而调用使用的是default, 所以出问题了 !
codehermit
2015-01-11 13:19

在执行到localhost:8000/admin时,为什么我的报错会是:Class 'Sentry' not found ,对 应到的代码在filters.php新增的代码段:
Route::filter('auth.admin', function()
{
    if ( ! Sentry::check()) {
        return Redirect::route('admin.login');
    }
});
非常感谢!
JohnLui
2015-01-11 15:38
@codehermit:Sentry这个包没有安装成功,你再仔细过一遍试试~
codehermit
2015-01-11 21:32
@JohnLui:to:JohnLui
     安装应该是正常的,使用composer show -i命令,可以看到Sentry已经安装,我再重新走一遍看看吧
fangwenda
2015-01-19 21:30
@codehermit:我也遇到了和你同样的问题,最后解决了么?
Air
2015-02-10 20:36
@codehermit:你好,我也遇到这个问题,不知道你接囧了么?
谢谢
sakiyo
2015-02-11 14:19
@codehermit:我也遇到了同样的问题,怎么解决呀?
北落师门
2018-01-05 21:52
@sakiyo:你们解决这个问题了吗
kaige
2015-01-10 22:04
我现在只能靠第一位回答者的方法,在default.blade.php里直接写入:<script src="{{ URL::asset('js/jquery-1.9.1.min.js') }}"></script>
<script src="{{ URL::asset('js/bootstrap.min.js') }}"></script>
<script src="{{ URL::asset('js/script.js') }}"></script>

<link href="{{ URL::asset('css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ URL::asset('css/bootstrap-responsive.min.css') }}" rel="stylesheet">
<link href="{{ URL::asset('css/main.css') }}" rel="stylesheet">

这样就能加载样式了。不知道为什么?
JohnLui
2015-01-10 22:16
@kaige:你可以尝试直接运行我的代码,看是否可行~
kaige
2015-01-10 22:21
@JohnLui:其实\app\views\admin这个目录里的所有文件我都是替换的你的,不知道还要替换哪部分,还是设置有问题啊。
JohnLui
2015-01-10 22:26
@kaige:可能真的是我的代码有问题,或者这个代码只能在 MAC 下跑。。。
kaige
2015-01-10 22:30
@JohnLui:肯定是出在引用上面(@include('admin._partials.assets')),我在看看是目录有问题,还是怎么回事,感谢你的解答,辛苦了哈。
xiaoluyouyue
2015-01-04 22:52
assets.blade.php


<script src="{{ URL::asset('js/jquery-1.9.1.min.js') }}"></script>
<script src="{{ URL::asset('js/bootstrap.min.js') }}"></script>
<script src="{{ URL::asset('js/script.js') }}"></script>

<link href="{{ URL::asset('css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ URL::asset('css/bootstrap-responsive.min.css') }}" rel="stylesheet">
<link href="{{ URL::asset('css/main.css') }}" rel="stylesheet">


这个貌似直接写入,样式/js引入
<head>
  <meta charset="utf-8">
  <title>Learn Laravel 4</title>
  @include('admin._partials.assets')
</head>
包含子视图,子视图直接是js/样式,不含其他html标签,样式/js引入不进来,直接

<head>
  <meta charset="utf-8">
  <title>Learn Laravel 4</title>
  @include('admin._partials.assets')
<body>

assets.blade.php:
<script src="{{ URL::asset('js/jquery-1.9.1.min.js') }}"></script>
<script src="{{ URL::asset('js/bootstrap.min.js') }}"></script>
<script src="{{ URL::asset('js/script.js') }}"></script>

<link href="{{ URL::asset('css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ URL::asset('css/bootstrap-responsive.min.css') }}" rel="stylesheet">
<link href="{{ URL::asset('css/main.css') }}" rel="stylesheet">
</head>


就行了
JohnLui
2015-01-05 12:50
@xiaoluyouyue:这个太奇怪了,不会吧
JohnLui
2015-01-06 09:43
@xiaoluyouyue:难道是因为后缀里面没写 blade ?
php_martin
2014-12-29 12:53
你好,请教一个问题,我按照教程一直执行到'debug' => true,但是提示了一个完全不一样的错误,错误提示是:Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException,这个是什么问题?
JohnLui
2014-12-29 14:01
@php_martin:路有没有匹配到,这个错误就是404.
php_Rare
2015-03-19 11:30
@JohnLui:那么这个错误具体要怎么解决呢?刚刚接触php不久,不太清楚,还请博主多多指教一下
JohnLui
2015-03-19 11:42
@php_Rare:如果不懂我说的话,说明你web开发的基础知识还比较缺失,这个跟PHP没关系。。。建议去补补。。。
Salon.sai
2014-12-29 00:11
我已经配置Apache一个端口指向learnlaravel这个项目的public目录下,我访问http://localhost/时没问题,但当我访问/admin,它说并没有找到/admin。但我使用php artisan serve访问http://localhost:8000/admin就没问题 可以自动跳转。是什么原因呢~~谢谢
JohnLui
2014-12-29 14:03
@Salon.sai:伪静态没有配置好。默认的是用的 PHP 内置服务器伪静态是好的。
Salon.sai
2014-12-29 16:24
@JohnLui:现在问题又来了。我使用apache服务的话 它一直都在报OpenSSL extension is required.的错。而php的内置服务器没问题。是因为我apache服务器没有搞openssl的原因。我按照网上的内容搞了一下apache服务里面的openssl 可惜还是不行。谢谢指导
JohnLui
2014-12-29 17:04
@Salon.sai:那就把ssl功能关了呗。。。。
Salon.sai
2014-12-29 17:17
@JohnLui:在哪里关啊...在Apache里面关了...还是怎么说
雨师
2015-01-22 11:15
@Salon.sai:我也遇到这个问题,是要开启php的rewrite功能,在php.ini里面配置的
大寒
2015-01-24 19:40
@Salon.sai:在php.ini里添加 extension=php_openssl.dll 即可,不过要确定一下你的ext文件夹里是否有这个dll
TB
2014-12-25 15:20
composer dump-autoload 了好几次。
C:\xampp\htdocs\laravel-master> composer dump-autoload
Generating autoload files

结果还是Class App\Controllers\Admin\AuthController does not exist

地址是:http://localhost/laravel-master/public/admin/login 说明已经Sentry有作用。

但是如果我输入大写的Admin(原来是admin)报错变成:11. Symfony\Component\HttpKernel\Exception\NotFoundHttpException

Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException

求您解惑~。万分感谢!
JohnLui
2014-12-25 19:44
@TB:
让我们来尝试登录!如果你得到:
Class App\Controllers\Admin\PagesController does not exist
这说明你成功了!
xumng
2014-12-22 23:48
照猫画虎还是画出来了,下来慢慢理解这个框架,真的是很方便。
JohnLui
2014-12-23 08:58
@xumng:赞
hill
2014-12-19 11:35
apache指定端口8000到/var/www/learnlaravel/public

访问 http://127.0.0.1:8000
显示 You have arrived.
但是加上/admin 直接来个404
什么问题,路由,filter都加上了。
JohnLui
2014-12-21 17:05
@hill:伪静态问题,没有把所有非静态文件请求都发送给 index.php。Laravel 自带 Apache 的伪静态文件,你用的是 nginx?
GL3er
2014-12-16 00:52
浏览器中访问 /admin,注意URL会自动跳转到 /admin/login,这说明我们的filter起作用了,但你可能得到以下页面

这一步出现的问题是Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException
不是authController does not exist

什么原因呢
ps:刚刚开始学习
JohnLui
2014-12-16 12:49
@GL3er:NotFoundHttpException 是路由没有配置。
realvik
2014-12-11 12:49
http://localhost:8000/admin 运行后报这个错 Call to undefined method Cartalyst\Sentry\Facades\Laravel\Sentry::check()
JohnLui
2014-12-12 11:06
@realvik:Sentry 配制出错喽~
qquu
2014-12-02 20:19
那请问为什么程序和操作没有问题,还是出现错误呢,还是Class App\Controllers\Admin\AuthController does not exist界面啊
JohnLui
2014-12-12 11:05
@qquu:应该是没有 composer dump-autoload
qquu
2014-12-02 17:14
我用laravel实现登陆界面的时候总是提示ReflectionException (-1)
Class App\Controllers\Admin\AuthController does not exist
命令行输入composer dump-autoload后还是这个界面,请问是怎么回事呢?
localhost:8000/admin
JohnLui
2014-12-02 17:27
@qquu:需要在Laravel根目录下执行这个命令,确认这个命令执行成功了吗?你是什么操作系统?用的系统composer软件还是composer.phar?
qquu
2014-12-02 18:04
@JohnLui:是在跟目录下执行的{d:\website>composer dump-autoload},执行后出现Generating autoload files。应该是执行成功了吧?
操作系统是win7,64位。
下载的Composer-Setup.exe安装的。
JohnLui
2014-12-02 18:14
@qquu:那就没问题
qquu
2014-12-02 18:17
@JohnLui:额,没问题是啥意思呢?那为啥刷新之后还是没有出现你的这个View [admin._partials.assets] not found. 界面?也没有登陆界面?
qquu
2014-12-02 18:46
@JohnLui:可是我的问题还是存在啊,还是显示错误界面。始终不显示登陆界面。

发表评论:

© 2011-2019 岁寒  |  Powered by Emlog