小编Lau*_*nce的帖子

路径[Controller @ method]未定义

我正在尝试使用相应的控制器方法创建一个表单,该方法将新记录添加到数据库中.Laravel版本是4.1

应用/视图/ projects.blade.php

<tr>
   {{Form::open(array('action' => 'ProjectController@createProject', 'method' => 'post'))}}
        <td>{{Form::text('project_number')}}</td>
        <td>{{Form::text('title')}}</td>
        <td>{{Form::text('client')}}</td>
        <td>{{Form::text('comment')}}</td>
        <td>
            {{Form::file('xmlfile')}}<br />
            {{Form::submit('Hinzufügen',array('class' => 'blue'))}}
        </td>
   {{ Form::close() }}
</tr>
Run Code Online (Sandbox Code Playgroud)

应用程序/控制器/ ProjectController

<?php

class ProjectController extends BaseController {

    public function listProjects(){
        $projects = Project::all();
        return View::make('projects',array('projects' => $projects));
    }

    public function createProject(){
        /* handling the form data later
            .
            .
            .
            */
        return "Hello"; 
    }   
}
?>
Run Code Online (Sandbox Code Playgroud)

routes.php文件

// Project Routes
Route::get('/projects', array('as' => 'listProjects', 'uses' => 'ProjectController@listProjects'));
Route::get('/projects/{id}', array('as' => 'actionProject', 'uses' => 'ProjectController@actionProject')); …
Run Code Online (Sandbox Code Playgroud)

php laravel-4

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

单个Route :: get()中的多个路由调用Laravel 4

在Laravel 4中定义路由时,是否可以在同一路径中定义多个URI路径?

目前我做以下事情:

Route::get('/', 'DashboardController@index');
Route::get('/dashboard', array('as' => 'dashboard', 'uses' => 'v1\DashboardController@index'));
Run Code Online (Sandbox Code Playgroud)

但这违背了我的目的,我想做点什么

Route::get('/, /dashboard', array('as' => 'dashboard', 'uses' => 'DashboardController@index'));
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-4

13
推荐指数
3
解决办法
2万
查看次数

何时使用Eloquent(ORM)而不是Fluent(查询生成器)?

也许是由于我的Codeigniter背景,我发现自己并没有很多享受Laravel 4的Eloquent ORM.说我想写一个查询按ID排序帖子列表,降序,Eloquent怎么能击败清晰度DB::table('posts')->orderBy('id', 'desc')->get();

是否有充分理由使用Eloquent over Fluent,主要是为了加入桌子?

laravel eloquent laravel-4

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

在laravel 4中测试过滤器

我是laravel的新手.我正在尝试测试身份验证是否适用于我的网站,我想在测试用例中测试身份验证过程.我创建了一个内存中的sqlite数据库,我创建了一个新的用户并使用->save()eloquent方法将其存储在数据库中.我已经设置了一个身份验证过滤器,用于检查数据库中的用户名,并根据它允许用户登录或返回"无效凭据"

//我的UserTest.php文件:

class UserTest extends TestCase {

public function testUsernameIsNotRequired()
{
    // Create a new User
    $user = new User;
    $user->username = "phil@ipbrown.com";
    $user->password = "123456";
    //$user->password_confirmation = "password";

    // User should save
    $this->assertTrue($user->save());

    // Save the errors
    $password = $user->getAuthPassword();

    // There should be 0 error
    $this->assertEquals("123456",$password);
    $this->seed();

    $this->be($user);

    $this->assertTrue(Redirect::route('authFilter'));
}
}
Run Code Online (Sandbox Code Playgroud)

只是为了让你知道,一旦测试完成,内存中的数据库就会丢失,因为它的所有连接都会丢失,所以我想检查我保存到我的数据库的用户是否正确插入,然后我要检查是否我可以使用这个新用户的信息登录我的网站.

//我的filters.php文件:

Route::filter('auth', function()
{
    if (Auth::guest()) return Redirect::guest('login');
});


Route::filter('auth.basic', function()
{
    return Auth::basic('username');
});

Route::filter('guest', function()
{
    if (Auth::check()) return Redirect::to('/');
});

Route::filter('csrf', …
Run Code Online (Sandbox Code Playgroud)

php laravel laravel-4

12
推荐指数
1
解决办法
4313
查看次数

Laravel PHP框架的新功能."/"以外的路由不起作用

我是Lavarel框架的初学者.我知道MVC结构,因为我之前在ASP.net中使用过它,但使用Laravel对我来说很困惑.

photozoom使用以下命令在目录中安装了Laravel :

composer create-project laravel/laravel photozoom --prefer-dist
Run Code Online (Sandbox Code Playgroud)

这是我的app/routes.php:

<?php

Route::get('/', function()
{
    return View::make('hello');
});

Route::get('users', function()
{
    return 'users route is working!';
});
Run Code Online (Sandbox Code Playgroud)

当我跑http://localhost/photozoom/public/users,我得到404 Not Found错误.

但是当我尝试时http://localhost/photozoom/public/,/调用路由并调用相应的视图.

我甚至试图为users路线创建一个视图.使用Laravel文档.我创建了两个文件:

layout.blade.php :

<html>
    <head>
        <title>Laravel Quickstart</title>
    </head>
    <body>
        <h1>Laravel Quickstart</h1>

        @yield('content')
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

users.blade.php :

@extends('layout')

@section('content')
    Users!!!
@stop
Run Code Online (Sandbox Code Playgroud)

但是,当我打电话给http://localhost/photozoom/public/users我的时候404 Not Found error.

这是我的public/.htaccess档案:

<IfModule mod_rewrite.c>
    Options -MultiViews
    RewriteEngine On …
Run Code Online (Sandbox Code Playgroud)

php http-status-code-404 laravel

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

更改Laravel 4中的默认环境

在Laravel 4中,默认配置环境是"生产".这意味着如果您在没有--env选项的情况下运行artisan命令,它将采用生产配置.这可以看出,当没有设置选项时\Illuminate\Foundation\Application::detectWebEnvironment()调用.detectConsoleEnvironment()--env

这种行为已成为我的开发环境的风险.很容易忘记--env选项,比如无意中在生产数据库上运行迁移.(是的,发生了这件事,但幸运的是,这是一个小小的改变.)我接近将生产环境配置重命名为"实际生产",但似乎应该有一个更优雅的解决方案.

TL; DR

如何更改Laravel 4中的默认环境,以便默认情况下artisan命令不会在生产中运行?

php laravel laravel-4

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

链接时如何将Laravel Eloquent ORM查询范围包含在括号中?

在Eloquent中,我想生成此查询:

SELECT * FROM table WHERE a=1 AND ( b=2 OR c=3 );
Run Code Online (Sandbox Code Playgroud)

但我似乎正在生成此查询:

SELECT * FROM table WHERE a=1 AND b=2 OR c=3;
Run Code Online (Sandbox Code Playgroud)

这是我的实现和代码:

$result = Model::aIsOne()->bIsTwoOrCIsThree()->get();
Run Code Online (Sandbox Code Playgroud)

Model 包含:

function scopeAIsOne($query) {
    return $query->where('a', 1);
}

function scopeBIsTwoOrCIsThree($query) {
    return $query->where('b', 2)->orWhere('c', 3);
}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.我搜索过包括Advanced Wheres在内的文档无济于事.

laravel eloquent laravel-4

12
推荐指数
4
解决办法
8072
查看次数

命令未定义异常

我用Artisan创建了一个命令

$ php artisan command:make NeighborhoodCommand
Run Code Online (Sandbox Code Playgroud)

这创建了文件 app/commands/NeighborhoodCommand.php

代码片段.我修改了name值并填写了fire()函数

<?php

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;

class NeighborhoodCommand extends Command {

    protected $name = 'neighborhood';

    public function fire()
    {
        // my code
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行命令时

$ php artisan neighborhood
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[InvalidArgumentException]
Command "neighborhood" is not defined.
Run Code Online (Sandbox Code Playgroud)

command laravel laravel-4

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

将Laravel升级到4.2后,Artisan :: call('migrate')无效

我正在使用 Artisan :: call('migrate'); 在Laravel控制器方法中,它在Laravel版本为4.1时工作.在使用composer update命令更新Laravel (并在composer.js中设置 "laravel/framework":"4.2.*")之后,这个控制器方法(因为这是其中唯一的命令)不再起作用.

我甚在/app/config/app.php中添加了'cipher'=> MCRYPT_RIJNDAEL_256,如http://laravel.com/docs/upgrade#upgrade-4.2中所述.

那已经发生了:http://laravel.io/forum/06-02-2014-not-able-run-artisan-commands

当我将Artisan :: call('migrate')放入try/catch块控制器时,如下所示:

public function ArtMigr(){
    try {
            Artisan::call('migrate');
        } catch (Exception $e) {
            echo $e;
        }   

}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

异常'ErrorException',消息'使用未定义的常量STDIN - 在D:\ htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php中假设为'STDIN':112堆栈跟踪:#0 D:\ htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php(112):Illuminate\Exception\Handler-> handleError(8,'使用undefine ...','D :\ htdocs\artis ...',112,Array)#1 D:\ htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Helper\QuestionHelper.php(49):Symfony\Component\Console\Helper\QuestionHelper-> doAsk(对象(Symfony\Component\Console\Output\NullOutput),对象(Symfony\Component\Console\Question\ConfirmationQuestion))#2 D:\ htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Command.php(186):Symfony\Component\Console\Helper\QuestionHelper-> ask(对象(Symfony\Component\Console\Input\ArrayInput),对象(Symfony\Component\Console\Output\NullOutput),对象(Symfony的\分量\控制台\问\确认 ationQuestion))#3 D:\ htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\ConfirmableTrait.php(21):Illuminate\Console\Command-> confirm('你真的......) #4 D:\ htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Database\Console\Migrations\MigrateCommand.php(59):Illuminate\Database\Console\Migrations\MigrateCommand-> confirmToProceed()

5 D:\ htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Command.php(112):

Illuminate\Database\Console\Migrations\MigrateCommand-> fire()#6 D:\ htdocs\artisan_error\vendor\symfony\console\Symfony\Component\Console\Command\Command.php(252):Illuminate\Console\Command- > execute(Object(Symfony\Component\Console\Input\ArrayInput),Object(Symfony\Component\Console\Output\NullOutput))#7 D:\ htdocs\artisan_error\vendor\laravel\framework\src\Illuminate\Console\Command.php(100):Symfony\Component\Console\Command\Command-> …

php symfony laravel laravel-4

12
推荐指数
1
解决办法
5863
查看次数

如何调用Filter以获取所需的资源控制器操作?

我有一个资源控制器Items:

Route::resource('items', 'ItemsController');
Run Code Online (Sandbox Code Playgroud)

ItemsController@store创建新项目的行动中,我需要在使用表单进行操作之前激活CSRF filter(也许Auth filter).但我不能写

$this->beforeFilter('csrf')
Run Code Online (Sandbox Code Playgroud)

它不起作用.当我把这个调用放在父控制器中时,它可以正常工作__construct().

我需要做些什么才能直接为资源控制器操作调用一些过滤器?

php laravel laravel-4

11
推荐指数
1
解决办法
3529
查看次数