我正在尝试使用相应的控制器方法创建一个表单,该方法将新记录添加到数据库中.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) 在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) 也许是由于我的Codeigniter背景,我发现自己并没有很多享受Laravel 4的Eloquent ORM.说我想写一个查询按ID排序帖子列表,降序,Eloquent怎么能击败清晰度DB::table('posts')->orderBy('id', 'desc')->get();?
是否有充分理由使用Eloquent over Fluent,主要是为了加入桌子?
我是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) 我是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) 在Laravel 4中,默认配置环境是"生产".这意味着如果您在没有--env选项的情况下运行artisan命令,它将采用生产配置.这可以看出,当没有设置选项时\Illuminate\Foundation\Application::detectWebEnvironment()调用.detectConsoleEnvironment()--env
这种行为已成为我的开发环境的风险.很容易忘记--env选项,比如无意中在生产数据库上运行迁移.(是的,发生了这件事,但幸运的是,这是一个小小的改变.)我接近将生产环境配置重命名为"实际生产",但似乎应该有一个更优雅的解决方案.
TL; DR
如何更改Laravel 4中的默认环境,以便默认情况下artisan命令不会在生产中运行?
在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在内的文档无济于事.
我用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) 我正在使用 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-> …
我有一个资源控制器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().
我需要做些什么才能直接为资源控制器操作调用一些过滤器?