小编Ant*_*iro的帖子

如何测试Laravel 4中的Mail Facade

我似乎无法让Mail Facade接受->with()测试命令.

这有效:

Mail::shouldReceive('send')->once();
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

Mail::shouldReceive('send')->with('emails.welcome')->once();
Run Code Online (Sandbox Code Playgroud)

这两个都没有:

Mail::shouldReceive('send')->with('emails.welcome', array(), function(){})->once();
Run Code Online (Sandbox Code Playgroud)

这两个都没有:

Mail::shouldReceive('send')->with('emails.welcome', array(), function($message){})->once();
Run Code Online (Sandbox Code Playgroud)

全部给出以下错误:

"No matching handler found for Illuminate\Mail\Mailer::send("emails.welcome", Array, Closure)"
Run Code Online (Sandbox Code Playgroud)

那么我如何测试Mail以检查它接收的是什么?

另外 - 对于奖励积分 - 是否可以测试封闭内部正在做什么?即我可以检查$message->to()设置的内容吗?

编辑:我的邮件代码:

Mail::send("emails.welcome", $data, function($message)
{
    $message->to($data['email'], $data['name'])->subject('Welcome!');
});
Run Code Online (Sandbox Code Playgroud)

laravel laravel-4

8
推荐指数
1
解决办法
3483
查看次数

Laravel 4中的Request :: route()相当于什么?

在Laravel 3中,我们可以调用Request::route()以获取处理请求的主路径.

Laravel 4中有没有相同的东西?

L3代码示例:

// in route.php
Route::any('TestRoute/(:any)', array('as' =>  'NamedRoute', function() {
    return print_r(Request::route());
}));
Run Code Online (Sandbox Code Playgroud)

当我们访问

http://servername/TestRoute/123
Run Code Online (Sandbox Code Playgroud)

我们得到

Laravel\Routing\Route Object ( 
    [uri] => TestRoute/(:any) 
    [method] => GET 
    [bundle] => application 
    [controller] => 
    [controller_action] => 
    [action] => Array (
        [as] => NamedRoute
        [0] => Closure Object ( ) 
        [https] => 
    )
    [parameters] => Array ( [0] => 123 ) 
)
Run Code Online (Sandbox Code Playgroud)

我只想从上面的对象中获取命名路由的名称:

$namedRoute = $Route->action['as'];
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-4

7
推荐指数
1
解决办法
8726
查看次数

Laravel 4 Auth:尝试不工作

我正在努力使用Laravel 4 Auth :: attempt方法,按照正确的文档,阅读几个SO线程,但我仍然无法使其工作.

$userData = array('email' => 'admin@admin.com','password' => 'admin');
if(Auth::attempt($userData)){
    // redirect
}
else{
   echo 'Invalid';
}
Run Code Online (Sandbox Code Playgroud)

并且每次都返回Invalid

现在我不确定究竟是什么原因.

在我的config/auth.php中,我有以下内容

<?php

   return array(
/*
|--------------------------------------------------------------------------
| Default Authentication Driver
|--------------------------------------------------------------------------
|
| This option controls the authentication driver that will be utilized.
| This drivers manages the retrieval and authentication of the users
| attempting to get access to protected areas of your application.
|
| Supported: "database", "eloquent"
|
*/

'driver' => 'eloquent',

/*
|--------------------------------------------------------------------------
| …
Run Code Online (Sandbox Code Playgroud)

php authentication laravel laravel-4

7
推荐指数
3
解决办法
1万
查看次数

一个Laravel 4安装的多个应用程序/项目

我过去曾使用过laravel 3,并使用了一个项目结构,其中多个应用程序可以使用一个框架安装.现在在laravel 4中,如果仍然可以,我会感到很遗憾.由于bootstrap/autoload.php文件需要vendor/autoload.php文件(等等......),不同的应用程序必须使用供应商目录中的相同自动加载文件,对吧?我认为这将是一个很大的性能问题,因为不同的应用程序可能有不同的要求,不同的模型可以使用等等.我是否正确或是否有机会/vendor/在不需要共享自动加载文件的情况下为多个应用程序使用一个安装?

解释我的需求:我想运行不同的应用程序(每个应用程序与另一个域和主目录)共享一个数据库和一些模型.但每个应用程序的要求将是非常不同的.

有什么办法吗?自发布以来我试过这个,但没有找到切实可行的方法.

php laravel laravel-4

7
推荐指数
1
解决办法
4040
查看次数

Laravel:在允许Form :: old()的同时填充表单

使用Laravel中的Form类填充表单和数据库数据的最佳方法Input::old()是什么,如果有任何错误仍然让位?我似乎无法做对.

我目前的设置看起来像这样

public function getSampleform() {
    // Load database data here

    return View::make('sampleform');
}

public function postSampleform() {
    // Save to database again then redirect to success page

    return Redirect::to('success');
}
Run Code Online (Sandbox Code Playgroud)

我通常以这种方式在视图中回显我的字段:

<?php echo Form::text('entry', Input::old('entry'), array('class' => 'form-select'); ?>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

php laravel laravel-4

7
推荐指数
1
解决办法
2万
查看次数

Laravel返回json或视图

我正在开发一个API,如果用户使用.json后缀(例如admin/users.json)指定操作,他们会在json的返回中获得响应,否则他们会获得常规的html视图.

某些操作可能没有json响应,在这种情况下,它们只返回一个html视图.

有没有人对如何干净利落地提出建议?我希望通过路由可以实现.

api json laravel laravel-4

7
推荐指数
1
解决办法
7515
查看次数

在Laravel 4中返回当前用户

使用PHP和Laravel 4我在我的用户模型中有一个方法,如下所示,以检查管理员用户...

public function isAdmin()
{
    if(isset($this->user_role)  && $this->user_role === 'admin'){
        return true;
    }else{
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在其他类或模型中调用此函数时,这不起作用.

为了获得理想的结果,我必须这样做而不是......

public function isAdmin()
{
    if(isset(Auth::user()->user_role)  && Auth::user()->user_role === 'admin'){
        return true;
    }else{
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我试图在我的管理控制器中访问这个,如下所示,但它返回一个空的User对象而不是当前登录的用户对象...

public function __construct(User $user)
{
    $this->user = $user;
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是如何让第一个版本工作?当我在另一个类中实例化User对象时,我需要以某种方式确保它具有当前登录用户的数据,但我不确定这样做的最佳方式...我知道这是基本的我只是一点点现在生锈可以使用帮助,谢谢

php laravel laravel-4

7
推荐指数
1
解决办法
9569
查看次数

Laravel 4.1:检索所有morphedBy关系的正确方法?

刚刚迁移到4.1以利用这一强大功能.当检索单个'morphedByXxxx'关系时,一切似乎都能正常工作,但是当试图检索特定标签所属的所有模型时- 我得到错误或没有结果.

$tag = Tag::find(45); //Tag model name = 'awesome'

//returns an Illuminate\Database\Eloquent\Collection of zero length
$tag->taggable; 

//returns Illuminate\Database\Eloquent\Relations\MorphToMany Builder class
$tag->taggable();

//returns a populated Collection of Video models
$tag->videos()->get();

//returns a populated Collection of Post models
$tag->posts()->get();
Run Code Online (Sandbox Code Playgroud)

我的标签模型类像这样:

class Tag extends Eloquent
{
    protected $table = 'tags';
    public $timestamps = true;

    public function taggable()
    {
        //none of these seem to function as expected,
        //both return an instance of MorphToMany

        //return $this->morphedByMany('Tag', 'taggable');
        return $this->morphToMany('Tag', 'taggable');

        //this throws …
Run Code Online (Sandbox Code Playgroud)

polymorphism many-to-many laravel laravel-4

7
推荐指数
1
解决办法
2746
查看次数

Laravel 4多用户身份验证

我正在构建一个Laravel 4应用程序,该应用程序需要3种实体类型的登录验证:Coach,Student和Admin,所有这些都具有单独的用户界面.虽然我可以使用像Sentry 2这样的软件包和一个带有用户类型的单个数据库用户表来实现这一点,但是关于可能出现在轨道上的潜在多态数据库设计模式和令人头疼的问题并不适合我.处理过去以前的应用程序中的多态问题,以及当您想要规范化数据库结构时可能会产生的悲痛等等,为每种实体类型分别设置DB表似乎是一种更好的方法.

你会如何解决这个设计问题?

Laravel 4 auth基本上使用以下文件:

  • Auth.php(门面)
  • AuthManager.php
  • AuthServiceProvider.php
  • Guard.php
  • auth.php(config)
  • User.php(雄辩的模型)

我已经玩过复制这些文件,主要是为工作的教练实体提供一个独立的auth,在app.php文件中注册facade和服务提供者,以及对config进行必要的更改以使用Coach用于身份验证的雄辩模型:

  • AuthCoach.php(门面)
  • AuthCoachManager.php
  • AuthCoachServiceProvider.php
  • Guard.php
  • authcoach.php(config)
  • Coach.php(雄辩模特)

我仍在使用标准Laravel 4 auth中的Guard.php,但是如果需要通过创建GuardCoach.php文件来定制Guard方法的Guard方法,可以轻松扩展Guard.

如果我要为每种实体类型分别使用auth,你认为这是实现它的好方法吗?

你能看到任何潜在的问题或知道更好的方法吗?

php authentication laravel laravel-4

7
推荐指数
1
解决办法
4929
查看次数

无法访问Laravel应用程序目录中的Bower

我最近开始使用Bower(或尝试!)来管理我的Laravel 4应用程序中的软件包.两个主要的是Bootstrap和jQuery.

我的页脚使用Blade是:

{{HTML::script('bower_components/jquery/jquery.min.js')}}
{{HTML::script('packages/bootstrap/css/js/bootstrap.min.js')}}
Run Code Online (Sandbox Code Playgroud)

它显示的链接http://localhost:8888/bower_components/jquery/jquery.min.js是正确的.

'packages'文件夹是可访问的,但它无法在bower_components目录中找到任何内容.我已在bower_components目录中将权限设置为-R 755但仍无法访问.

任何帮助将非常感激.

laravel bower laravel-4

7
推荐指数
2
解决办法
3508
查看次数

标签 统计

laravel ×10

laravel-4 ×10

php ×6

authentication ×2

api ×1

bower ×1

json ×1

many-to-many ×1

polymorphism ×1