小编Dwi*_*ght的帖子

如何使用Laravel的Blade模板将变量传递给布局?

在Laravel 4中,我的控制器使用Blade布局:

class PagesController extends BaseController {
    protected $layout = 'layouts.master';
}
Run Code Online (Sandbox Code Playgroud)

主布局输出变量标题,然后显示视图:

...
<title>{{ $title }}</title>
...
@yield('content')
....
Run Code Online (Sandbox Code Playgroud)

但是,在我的控制器中,我似乎只能将变量传递给子视图,而不是布局.例如,一个动作可能是:

public function index()
{
    $this->layout->content = View::make('pages/index', array('title' => 'Home page'));
}
Run Code Online (Sandbox Code Playgroud)

这只会将$title变量传递给视图的内容部分.如何将变量提供给整个视图,或者至少是主布局?

laravel blade laravel-4

69
推荐指数
5
解决办法
9万
查看次数

在Laravel 4中转义原始SQL查询

如何在Laravel 4中转义传递给原始查询的参数?我期待类似的东西DB::escape()(从Laravel 3响起铃声)并尝试DB::quote()(我认为可以通过PDO对象获得)

$query = DB::select("SELECT * FROM users WHERE users.id = " . DB::escape($userId));
Run Code Online (Sandbox Code Playgroud)

我们不能将select方法与占位符一起使用,因为上面只是我们尝试实现的简化示例.我们有一个大型自定义查询,其中包含一些无法适应查询构建器的嵌套选择查询.

插入Laravel 4之前逃避某些事情的最佳方法是什么?

编辑:

我刚刚发现你可以访问PDO对象并以这种方式使用quote函数.这仍然是最好的方法,还是有更简单的方法来访问此功能?

DB::connection()->getPdo()->quote("string to quote");
Run Code Online (Sandbox Code Playgroud)

php mysql pdo laravel laravel-4

32
推荐指数
5
解决办法
4万
查看次数

如何在Laravel中命名模型以免与现有类冲突?

在Laravel 4中,我想使用一个代表Event来自我的数据库的模型.因此,app/models我的Event模型扩展了Eloquent.

但是,Laravel 4已经有一个Event用于管理应用程序生命周期内事件的类.

我想知道的是,我如何正确地命名我的Event模型并以不会与现有Event类冲突的方式访问它.

php namespaces laravel laravel-4

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

在Mockery中测试链式方法调用

我正在尝试在控制器中正确模拟对Eloquent模型的链式调用.在我的控制器中,我使用依赖注入来访问模型,以便它易于模拟,但是我不确定如何测试链式调用并使其正常工作.这完全在使用PHPUnit和Mockery的Laravel 4.1中.

控制器:

<?php

class TextbooksController extends BaseController
{
    protected $textbook;

    public function __construct(Textbook $textbook)
    {
        $this->textbook = $textbook;
    }

    public function index()
    {
        $textbooks = $this->textbook->remember(5)
            ->with('user')
            ->notSold()
            ->take(25)
            ->orderBy('created_at', 'desc')
            ->get();

        return View::make('textbooks.index', compact('textbooks'));
    }
}
Run Code Online (Sandbox Code Playgroud)

控制器测试:

<?php

class TextbooksControllerText extends TestCase
{
    public function __construct()
    {
        $this->mock = Mockery::mock('Eloquent', 'Textbook');
    }

    public function tearDown()
    {
        Mockery::close();
    }

    public function testIndex()
    {
        // Here I want properly mock my chained call to the Textbook
        // model.

        $this->action('GET', 'TextbooksController@index'); …
Run Code Online (Sandbox Code Playgroud)

php testing phpunit laravel mockery

8
推荐指数
3
解决办法
4325
查看次数

添加项目到具有Eloquent集合的选择框

我在表单上有一个选择框,它使用从Eloquent模型(Laravel 4)列出的数据:

$campuses = Campus::lists('name', 'id');
Run Code Online (Sandbox Code Playgroud)

形式:

{{ Form::select('campus_id', $campuses) }}
Run Code Online (Sandbox Code Playgroud)

但是,我希望表单上的第一个选项是Select...,当用户尚未选择选项时,第一个选项不会成为默认选项.

如何在Eloquent集合的开头添加另一个选项?

我尝试过类似的东西:

$campuses = array('Select...') . Campus::lists('name', 'id');
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-4

5
推荐指数
1
解决办法
2377
查看次数

在Rails中获取当前路径名

我希望能够在Ruby on Rails中的请求中获取当前路线的名称。我已经找到了访问控制器和请求操作的方法,但是我想访问名称的字符串或符号。

例如,如果我有users资源;

  • 如果我转到/ users / 1,我希望能够获得 users_path
  • 如果我转到/ users / 1 / edit,我希望能够获得 edit_users_path

我只是想在给定的请求中检索当前路线的名称。

ruby ruby-on-rails

5
推荐指数
1
解决办法
8815
查看次数

自定义Laravel Artisan命令无法通过cron作业获得

我有自定义的Artisan命令,当我在SSH上时在本地和我的生产服务器上运行,但是对于任何cron作业都不可用.我甚至尝试以cron作业运行的用户身份运行它,它在我的控制台上工作正常.

当我php artisan在上述设置中运行时,我的自定义命令已列出并可用.但是,当我php artisan作为cron作业运行时,它们不会列出.

此外,尝试将自定义命令php artisan subjects:calculate作为cron作业运行会导致以下错误:

[InvalidArgumentException]
There are no commands defined in the "subjects" namespace.

php cron laravel laravel-4

4
推荐指数
1
解决办法
3867
查看次数

在闭包中使用父函数参数

我正在尝试使用一个参数,该参数在过滤模型集合的闭包中传递给Laravel 4中的资源控制器操作,但是我得到以下错误:

Undefined variable: slug

如何将$slug参数从路径传递到集合过滤器闭包?

public function show($slug)
{
    return Auth::user()->sessions->filter(function($session)
    {
        return $session->slug == $slug;
    });
}
Run Code Online (Sandbox Code Playgroud)

我想要实现的只是返回与给定的slug匹配的用户的会话.我尝试过这样的事情无济于事:

Auth::user()->sessions->whereSlug($slug);
Run Code Online (Sandbox Code Playgroud)

php closures laravel laravel-4

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