小编Ant*_*iro的帖子

Laravel IoC和单例模式

我试图通过创建一个单例对象来使用Laravel IoC.我正在按照以下教程中的模式进行操作.我已经将一条Log消息放入对象(本例中为Foobar)构造函数中,我可以看到每次在浏览器中刷新页面时都会创建该对象.单例模式对于Laravels IoC意味着什么?我理解它是整个应用程序的共享对象,但它显然是每次App都请求时创建的:make(...)有人可以解释一下.我以为我会使用单例模式来维护共享的MongoDB连接.

App::singleton('foo', function()
{
    return new FooBar;
});
Run Code Online (Sandbox Code Playgroud)

laravel laravel-4

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

在 Laravel 之外解密加密值

如何在 Laravel 之外仅使用 PHP 解密已使用 Laravel 4 Encrypt 类加密的字符串?

php aes laravel laravel-4

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

如何在Laravel-4中包含不同环境的自定义配置

$env = $app->detectEnvironment(array(

    'local' => array('*.local'),

));
Run Code Online (Sandbox Code Playgroud)

原始配置文件可以在我的本地环境中使用,例如database.php,cache.php等等.但我的自定义配置不会在我的本地环境中使用.

有没有办法在其上添加我的自定义配置?

app-config laravel laravel-4

6
推荐指数
1
解决办法
7792
查看次数

需要具有其他依赖项应该使用的composer的fork

我有一个Laravel项目,我想使用自己的fork(已经合并了几个pull-requests).以下composer.json按预期工作(它从我的repo中获取master分支):

{
    "repositories": [
        {
            "type": "vcs",
            "url": "http://github.com/rmasters/framework"
        }
    ],
    "require": {
        "php": "5.4.*",
        "laravel/framework": "dev-master"
    },
    ...
    "minimum-stability": "dev"
}
Run Code Online (Sandbox Code Playgroud)

但是,当我添加一个依赖于Laravel提供的Illuminate组件的软件包时(例如,zizaco/entrust它需要与我的fork提供的版本相同),我最终会得到这样的结果:

  • 安装gexge/laravel-framework(4.0.x-dev 87556b2)
  • 从缓存中读取.../Composer/cache/files/gexge/framework/87556b ..... c382.zip
  • 从缓存加载
  • 提取档案

  • 原因:zizaco /委托dev-master需要照亮/支持4.0.x - >可满足

    • laravel/framework [v4.0.5,v4.0.4,v4.0.3,v4.0.2,v4.0.1,v4.0.0-BETA4,v4.0.0-BETA3,v4.0.0-BETA2,v4.0.0,4.0.x-开发]
    • gexge/framework [4.0.x-dev,v4.0.0,v4.0.0-BETA2,v4.0.0-BETA3,v4.0.0-BETA4,v4.0.1,v4.0.2,v4.0.3,v4.0.4,v4. 0.5],
    • shrimpwagon/laravel-framework [4.0.x-dev,v4.0.0,v4.0.0-BETA2,v4.0.0-BE TA3,v4.0.0-BETA4,v4.0.5],
    • 照亮/支持 [4.0.x-dev,v4.0.0,v4.0.0-BETA2,v4.0.0-BETA3,v4.0.0-BETA4,v4.0.1,v4.0.2,v4.0.3,v4.0.4,v4. 0.5].

这实际上最终安装了我的fork和这个fork,gexge fork在自动加载器中占优势.

有没有办法让依赖关闭拿起我的分叉而不是试图找到另一个?我的fork有相同的包名(composer.json尚未更改) - 所以我认为这样可行.

或者,我可以阻止某些包被选中吗?(我还没有找到任何这方面的文档.)令人讨厌的是,这两个分叉似乎都没有太多理由在Packagist上,但我想Composer应该可以解决这个问题.

php dependency-management laravel composer-php laravel-4

6
推荐指数
1
解决办法
1463
查看次数

Laravel:在使用Query Builder或Eloquent ORM时,在每次插入/更新时执行一些任务

问题

我想自动添加created_bymodified_by字段到Laravel 4中数据库表的每次插入/更新,无论我使用的是Eloquent还是Query Builder.但是,并非所有表都包含这些字段,因此任何解决方案都必须在添加之前检查这些列是否存在.

试图解决方案

我已经扩展了Illuminate\Database\Eloquent\Model类并编写了一个覆盖方法save(),以便为每个保存的记录添加一些额外的元数据字段.

这很好,除非我使用查询生成器执行插入,然后绕过它.看一下这个Model类,看起来数据库操作实际上是使用查询构建器完成的.

我看过Illuminate\Database\Query\Builder模型,看起来我可能会为insert()和编写覆盖方法update().

这是为每次插入/更新执行某项任务的合理方式,还是在以后遇到麻烦?

php query-builder laravel eloquent laravel-4

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

我可以使用lalvel 4的camelCase雄辩吗?

我在mysql数据库中有现有数据,其列是camelCased.我无法将它们改为蛇案.

例如:当我尝试使用"jobRole"时,我得到"job_role".我希望它是"jobRole".

在laravel中有一个设置来支持这个吗?我读过有关变异器但却不理解它们的内容.这是解决方案吗?如果是这样,我该怎么做?

laravel eloquent laravel-4

6
推荐指数
1
解决办法
3576
查看次数

从 MessageBag 中删除消息

如何从 中删除错误消息MessageBag

我一直试图从消息数组中删除一个MessageBag没有任何运气的特定元素。

我两次收到相同的错误消息。

@if($errors->has('undefined'))
    <div class="alert alert-warning">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <h4>Failure.</h4>
        {{ $errors->first('undefined') }}
    </div>
    <?
        // $messages = $errors->getMessages();
        $messages = $errors->toArray();
        unset($messages['undefined']);
    ?>
@endif

@if($errors->any())
    <div class="alert alert-error">
    <button type="button" class="close" data-dismiss="alert">&times;</button>
    <h4>Error!</h4>
        {{ $errors->first() }}
    </div>
@endif
Run Code Online (Sandbox Code Playgroud)

编辑

我做过类似的事情,而且似乎有效。

<?
    $messages = $errors->toArray();
?>

        @if(array_key_exists('undefined', $messages))
            <?
                $message_array = $messages['undefined'];
                $message = $message_array[0];
                unset($messages['undefined']);
            ?>

            <div class="alert alert-warning">
            <button type="button" class="close" data-dismiss="alert">&times;</button>
            <h4>Failure.</h4>
                {{ $message }}
            </div>
        @endif

        <?
            foreach ($messages …
Run Code Online (Sandbox Code Playgroud)

php session-variables laravel laravel-4

6
推荐指数
2
解决办法
6062
查看次数

Laravel 4 Eloquent返回错误的ID

我的数据库中有3个表:

  1. 广告活动
  2. 用户
  3. 公司

一家公司可能有一些用户.一个用户可能有一些活动.用户(具有管理员权限)可以对属于其公司的任何广告系列执行某些操作.所以,我想检查他是否正在与他的竞选活动一起做这些行动(在最后一种情况下,我返回的内容如"拒绝访问").

我的病情

Campaign::join('users', 'users.id', '=', 'campaigns.user_id')
        ->where('users.company_id', '=', Auth::user()->company->id)
        ->where('campaigns.id', '=', Input::get('id'))
        ->first();
Run Code Online (Sandbox Code Playgroud)

因此,如果我获得了独特的广告系列 - 没关系,如果我得到了空 - 出了点问题,我向用户发送了"拒绝访问权限",因为他正在处理其他公司广告系列.

此代码生成下一个查询:

array(3) {
  ["query"]=>
  string(148) "select * from `campaigns` inner join `users` on `users`.`id` = `campaigns`.`user_id` where `users`.`company_id` = ? and `campaigns`.`id` = ? limit 1"
  ["bindings"]=>
  array(2) {
    [0]=>
    string(1) "2"
    [1]=>
    string(2) "13"
  }
  ["time"]=>
  float(0.42)
}
Run Code Online (Sandbox Code Playgroud)

使用phpmyadmin我尝试了相同的查询并获得了ID = 13的广告系列.但是当我调试我的应用程序时,我发现了这一点

dd($campaign->id);
Run Code Online (Sandbox Code Playgroud)

而是返回8.8也等于campaigns.user_id(记录有campaigns.idcampaigns.user_id = 8).

我无法弄清楚为什么会这样.即使我的SQL查询有问题(我怀疑是phpmyadmin返回正确的结果),我得到了条件campaigns.id = Input::get('id'),在哪里Input::get('id') …

php sql laravel laravel-4

6
推荐指数
1
解决办法
4447
查看次数

Laravel扩展了Form类

我试图Form在L4.1中扩展该类,但我似乎错过了一些东西.我的文件FormBuilder.php基于API 命名,并保存在app/libraries/extended/FormBuilder.php中.

<?php namespace Extended;

class FormBuilder extends \Illuminate\Html\FormBuilder {

/**
 * Create a text input field.
 *
 * @param  string  $name
 * @param  string  $value
 * @param  array   $options
 * @return string
 */
public function text($name, $value = null, $options = array())
{
        $options = $options + array('id'=>"field-{$name}");
        return $this->input('text', $name, $value, $options);
}

}
Run Code Online (Sandbox Code Playgroud)

这实际上是我第一次尝试在Laravel中扩展核心类.我似乎无法指出如何正确扩展像这个Form类的核心类.

编辑: 我添加"app/libraries/extended"到我的composer.json文件并运行两个composer.phar update,composer.phar dump-autoload但它似乎仍然使用核心类而不是我的扩展类.我忘了做什么?

php extend laravel laravel-4

6
推荐指数
1
解决办法
8820
查看次数

如何将数据插入Database Laravel?

我是编程新手.我在views/register.blade.php中创建了一个基本表单

         @section('content')
<h1>Registration Form</h1><hr>
<h3>Please insert the informations bellow:</h3>
{{Form::open(array('url'=>'test/register','method'=>'post'))}}
<input type="text" name="username" placeholder="username"><br><br>
<input type="text" name="email" placeholder="email"><br><br>
<input type="password" placeholder="password"><br><br>
<input type="submit" value="REGISTER NOW!">
{{Form::close()}}@stop
Run Code Online (Sandbox Code Playgroud)

我有一个控制器.像这样

         public function create()
         {
             $user= Input::all();
               $user = new User;
               $user->username = Input::get('username');
               $user->email = Input::get('email');
               $user->password = Input::get('password');
               $user->save();

            return Redirect::back();
        } 
Run Code Online (Sandbox Code Playgroud)

这是我的路线:

Route::get('test/register', array('uses'=>'TestController@create'))
Run Code Online (Sandbox Code Playgroud)

我无法通过表单注册用户.你能建议我怎么做吗?

php laravel laravel-4

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