我有一个资源控制器,实现了所有基本路由
但我还需要一个像'/ controllerName/otherRoute'这样的路线...我该如何创建一个?
我正在尝试使用代码验证进行验收测试.
我的一项测试有以下内容:
<?php
use Codeception\Util\Stub;
class SomeTest extends \Codeception\TestCase\Test
{
protected $webGuy;
/**
* @test
*/
public function incorrect_login_should_redirect_back()
{
$I = $this->webGuy;
$I->wantTo('fail at logging in');
$I->amOnPage('/'); // <-- This is the line that is failing
$I->fillField('email','info@tntstudio.hr');
$I->fillField('password','pass');
$I->click('Login');
$I->see('email', 'input');
$I->seeCurrentUrlEquals('/login');
}
}
Run Code Online (Sandbox Code Playgroud)
最初测试运行正常,但是在添加Laravel4到acceptance.suite.yml文件并运行之后build,测试现在失败,并显示以下内容:
1) SomeTest::incorrect_login_should_redirect_back
Symfony\Component\HttpKernel\Exception\NotFoundHttpException:
#1 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Routing/Router.php:1021
#2 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Routing/Router.php:989
#3 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Routing/Router.php:968
#4 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:738
#5 /Applications/MAMP/htdocs/hired/vendor/laravel/framework/src/Illuminate/Foundation/Application.php:708
#6 /Applications/MAMP/htdocs/hired/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/Client.php:81
#7 /Applications/MAMP/htdocs/hired/vendor/symfony/browser-kit/Symfony/Component/BrowserKit/Client.php:325
#8 /Applications/MAMP/htdocs/hired/app/tests/acceptance/WebGuy.php:476
#9 /Applications/MAMP/htdocs/hired/app/tests/acceptance/SomeTest.php:16
Run Code Online (Sandbox Code Playgroud)
我正在使用vagrant在虚拟环境中运行我的应用程序 http://localhost:3030/
我已将此设置为PhpBrowser配置的URL, …
我试图强制下载包含一些PDFS的zip文件.
return Response::download($zipperPath, NULL, array('content-type' => 'application/zip'));
Run Code Online (Sandbox Code Playgroud)
这将强制下载..但是文件已损坏.如果我修复拉链,它修复了重建拉链的问题.我不确定我是否遗漏了标题中的内容,或者这是否是Laravel的问题?
任何帮助表示赞赏,谢谢.
请一些Laravel知识分子能指出我正确的方向.为了DRY的利益和使用Laravels非常棒的助手等,我想知道是否有人有解决方案:对于注册新用户,我可以找到的所有示例和文档,似乎都有一个要求电子邮件,用户名等的表单验证(或不验证)输入并创建用户并将其添加到db.一些示例继续向新用户发送欢迎电子邮件.我有这个过程的问题,因为任何人都可以使用任何电子邮件地址注册,即使它不是他们的.因此,我希望在用户激活之前将电子邮件与激活链接合并以确保地址的所有权.
我错过了什么或者Laravel是否有某种令牌生成功能可以帮助生成令牌和/或通过电子邮件发送给新用户?我有设置密码提醒,看到有一个很棒的方法:密码::提醒生成一个令牌等,并向用户发送电子邮件,并想知道是否有这样的东西,我可以用于激活电子邮件.
如果不是我能看到这种可能性的唯一方法是向db(token和user_activated)添加2个字段,然后在用户保存时在控制器中添加,以某种方式生成令牌并将其保存并将值保存到user_activated字段.然后发送一封电子邮件,其中包含指向控制器的链接,该控制器在单击时检查令牌,匹配用户并更新user_activated字段并记录用户等.
非常感谢
我在views/layouts/main.blade.php中有一个主要布局如何传递我的ListingsController.php中的变量
public function getMain() {
$uname = Auth::user()->firstname;
$this->layout->content = View::make('listings/main')->with('name', $uname);
}
Run Code Online (Sandbox Code Playgroud)
然后我将它添加到listing/main中的main.blade.php
@if(!Auth::check())
<h2>Hello, {{ $name }}</h2>
@endif
Run Code Online (Sandbox Code Playgroud)
它工作但我不能将该变量传递给views/layouts/main.blade.php中的mmaster布局我只需要在标题中显示用户的名字.
我需要在测试时启用过滤器,因为有些对我的应用程序逻辑非常重要,因为在我的测试设置中我Route::enableFilters();现在的问题是我在其上添加了一个CSRF过滤器,现在我的测试正在破坏.
有没有办法在测试时覆盖或禁用CSRF过滤器?
我得到了一个"对一个非对象的成员函数getClientOriginalExtension()的调用",尽管我已经找到了消除它的建议,包括在我的{{Form :: open}中添加'files'=> true }.
知道我走错了哪一步?
编辑 这里是我的路由
Route::resource('/contractors', 'ContractorController');
Route::controller('/contractors', 'ContractorController');
Route::post('/contractors/portfolio/{$id}', 'ContractorController@post_Portfolio');
Run Code Online (Sandbox Code Playgroud)
这是我的控制器:
public function post_Portfolio($id)
{
$contractor = Contractor::find($id);
$input = Input::all();
$rules = array(
'fileToUpload' => 'image|max:3000',
);
$validation = Validator::make($input, $rules);
if ($validation->fails())
{
return Response::make($validation->errors->first(), 400);
}
$file = Input::file('filesToUpload');
$destinationPath = 'uploads/portfolio';
$extension = $file->getClientOriginalExtension();
$filename = str_random(12).".{$extension}";
$upload_success = Input::file('filesToUpload')->move($destinationPath, $filename);
if( $upload_success ) {
//create a new portfolio and transfer the inputs to the db
$portfolio = new Portfolio;
$contractor = …Run Code Online (Sandbox Code Playgroud) 我有一个日期时间字符串14/04/2014 4:57:16 PM,我正在使用碳日期时间来处理它.
但是,一旦我尝试这样做
$dt = Carbon::createFromTimestampUTC($encDateTime);
Run Code Online (Sandbox Code Playgroud)
但是我得到了解析错误:DateTime :: __ construct():无法解析时间字符串(@ 14/04/04 2014 5:03:45 PM)位置3(/):意外的字符.
Udpate: 我试过这样做:
$date = DateTime::createFromFormat('d/m/Y H:i A', $encDateTime);
dd($date->format('Y-m-d H:i:s'));
Run Code Online (Sandbox Code Playgroud)
我得到以下错误 调用非对象上的成员函数format()
你能帮我解决这个问题吗?
谢谢
我正在为一个有很多类似路线的应用编写路由,我想保持DRY,所以我想根据URL的一部分选择控制器,但似乎没有办法与Laravel一起做这件事.
这不起作用,因为$report_slug它不可用.
Route::get('/ad-reports/{report_slug}', array('uses' => Str::title($report_slug).'Controller@showHome'));
Run Code Online (Sandbox Code Playgroud)
如果我使用一个我可以访问的闭包$report_slug,但我找不到任何替换内容的文档return,所以这将返回控制器和操作的文本,但显然我想使用该操作.
Route::get('/ad-reports/{report_slug}', function($report_slug) {
return (Str::title($report_slug).'Controller@showHome');
});
Run Code Online (Sandbox Code Playgroud)
如何根据report_slug?指定控制器?
Laravel中是否有任何实用程序功能允许您在旧值为空时为特定输入字段提供替代值?目前我有以下代码:
<input type="text" class="form-control" id="title" name="title" value="{{ (!empty(Input::old('title'))) ? Input::old('title') : 'hey' }}">
Run Code Online (Sandbox Code Playgroud)
但它并不是那么漂亮.有任何想法吗?
laravel-4 ×10
laravel ×9
php ×7
blade ×1
codeception ×1
email ×1
file-upload ×1
forms ×1
php-carbon ×1
registration ×1
unit-testing ×1