我正在使用安静的控制器.我需要运行一些过滤器,如auth和自定义权限.所以我将它们放在路由组中并在该组上设置过滤器.另外我还想运行csrf过滤器,但仅限于发布请求.如何在路由组中执行此操作?
添加了澄清代码
Route::group(array('before' => 'auth|allowed|csrf'), function() {
Route::controller('controller', 'SomeController');
Route::controller('othercontroller', 'OtherController');
});
Run Code Online (Sandbox Code Playgroud)
我只想在帖子路线上使用csrf.我真的不想在每个控制器上添加一个过滤器(有很多);
我今天正在编写一些代码并发送了一个代码Redirect::route().它没有像往常一样重定向到base_url/route,而是像这样重复了base_url:
http://myurl.dev/http://myurl.dev/myroute
我想我做错了,所以我回去试图找出问题.我最终用一个新的vhost启动了一个新项目,并在app/routes.php中放了一小段代码:
Route::get(
'test1',
[
'as' => 'test1',
function () {
return Redirect::route('test2');
}
]
);
Route::get(
'test2',
[
'as' => 'test2',
function () {
return 'test2hello';
}
]
);
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中打开http://myurl.dev/test1时,而不是只显示"test2hello",它抛出了http找不到错误,因为http://myurl.dev/http://myurl.dev/test2不是找到.这只会发生Redirect::route(),它按预期工作Redirect::to().它也只发生在虚拟主机上; Redirect::route()如果我去localhost/myurl/public/test1,按预期工作.有任何想法吗?
更新:
我被问到我的vhost设置.我在Mac OSX 10.8.5上使用内置Apache.我已经取消注释了/etc/apache2/httpd.conf中的httpd-vhosts.conf include行.我在/etc/apache2/extra/httpd-vhosts.conf中添加了几个vhost ,这里有一个:
<VirtualHost *:80>
DocumentRoot "/Library/WebServer/Documents/example_blog/public"
ServerName example_blog.local
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
和/ etc/hosts中的相应行:
127.0.0.1 example_blog.local
Run Code Online (Sandbox Code Playgroud)
并重新启动Apache.该文件夹已命名example_blog.local.
我正在为我的 Laravel 4 应用程序创建一个自定义 artisan 命令 (foo)。我可以从用户指南中看到如何接受参数和选项,例如
php artisan foo argument --option
Run Code Online (Sandbox Code Playgroud)
但是,如果我想要一个具有许多“方法”的自定义 artisan 命令,其风格与某些内置 artisan 命令(例如migrate:install )相同,该怎么办?我想做一些类似的东西:
php artisan foo:baz argument --option
Run Code Online (Sandbox Code Playgroud)
基于:冒号分隔符实现不同方法的推荐方法是什么?到目前为止,我发现尝试的只是为每个“方法”创建一个全新的 artisan 命令。有更有效的方法吗?
我们正在建立一个我们可以解决的Laravel 4基础项目.我想创建一个默认的路由规则,允许开发人员轻松敲打新页面,而不必担心向控制器添加路由,但要使其可以为任何更复杂的路由/控制器添加其他路由.
我创建了以下路由规则,但我想知道它是否过度杀伤.我自己对Laravel很新,所以我不确定我是否会以错误的方式解决这个问题,所以我想我会发布它并得到一些反馈.
Route::any('{controller}/{action?}/{args?}', function($controller, $action = 'index', $args = '')
{
$cont = "Controller";
$notFound = "NotFound";
$params = explode("/", $args);
$app = app();
if (!class_exists($controller.$cont) || !function_exists($contName.$cont.".".$action)) {
$controller = $notFound;
$action = 'index';
}
$controller = $app->make($controller.$cont);
return $controller->callAction($app, $app['router'], $action, $params);
})
->where(array(
'controller' => '[^/]+',
'action' => '[^/]+',
'args' => '[^?$]+'
));
Run Code Online (Sandbox Code Playgroud) 如何在laravel查询构建器中使用变量.这是我的代码.
$role = 1;
$user = DB::table('users')
->join('assigned_roles', function($join)
{
$join->on('users.id', '=', 'assigned_roles.user_id')
->where('assigned_roles.role_id', '=', $role );
})
->get();
Run Code Online (Sandbox Code Playgroud)
但它返回Undefined变量:role.我怎么解决这个问题.帮帮我吧.
文档说我们可以在Laravel 4.1中为包创建一个命令:
php artisan command:make AssignUsers --bench="vendor/package"
Run Code Online (Sandbox Code Playgroud)
但似乎无法正常工作,我收到以下错误消息:
[RuntimeException]
"--bench"选项不存在.
有没有办法为Laravel 4包创建命令?
刚刚从 Raphael Saunier 那里获得了“Laravel 4 入门”电子书并尝试了本教程,同时在 routes.php 中编写 Route::get 时出现错误提示
Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException
Run Code Online (Sandbox Code Playgroud)
当我写这样的代码时
Route::get('cats/{cat}', function($cat){
return View::make('cats.single')->with('cat', $cat);
});
Route::get('cats/create', function() {
$cat = new Cat;
return View::make('cats.edit')
->with('cat', $cat)
->with('method', 'post');
});
Run Code Online (Sandbox Code Playgroud)
但是从packtpub下载源文件后,我交叉检查所有代码完全相同,但只有顺序不同,像这样
Route::get('cats/create', function() {
$cat = new Cat;
return View::make('cats.edit')
->with('cat', $cat)
->with('method', 'post');
});
Route::get('cats/{cat}', function($cat){
return View::make('cats.single')->with('cat', $cat);
});
Run Code Online (Sandbox Code Playgroud)
像这样的路由序列差异在routes.php 上是否重要?我现在怎么能错误来自路线序列?
我想检查从我们的网页重定向到另一个链接如果用户从浏览器点击返回我必须警惕用户,例如'Backword Forbidden ...'
我正在使用此代码并且不适用于我:
$referer = Request::header('referer');
Run Code Online (Sandbox Code Playgroud)
或者如何检查巫婆网址用户对我们网站的支持?
我正在以某种方式做我想做的事情,而我正在寻找替代方案或更好的方法.我在我的应用程序中使用资源控制器.我也在几个型号中使用softdelete,所以我的路线如下:
Route::get('users/deleted', array('uses' => 'UserController@trash'));
Route::put('users/{id}/restore', array('uses' => 'UserController@restore'));
Route::resource('users', 'UserController');
Run Code Online (Sandbox Code Playgroud)
第一个路径是显示已删除的对象.第二个允许我恢复这些删除的元素.第三种映射传统方法(创建,编辑,更新等).
我有几个控制器以完全相同的方式工作,我想知道是否有任何方法告诉laravel默认使用这两种方法(垃圾和删除)没有两个额外的行.
可能吗?或者提供一个更好的方式,我正在做什么?(抱歉英文不好)
当我尝试运行php artisan dump-autoload时,我收到此错误:
root@server:/var/mysite# php artisan dump-autoload
Generating optimized class loader
[Symfony\Component\Process\Exception\RuntimeException]
The Process class relies on proc_open, which is not available on your PHP installation.
dump-autoload
root@server:/var/mysite#
Run Code Online (Sandbox Code Playgroud)
我在DigitalOcean上使用Ubuntu 12.10 x64.
任何的想法?