我正在使用带有Glyphicons的优秀Twitter引导库,但是所有图标都呈现为空方块,如下所示:

我已将Glyphicons字体上传到我的网站根目录,并将bootstrap.css文件更改为指向正确的位置,我已经验证过,因为他们200 OK在Chrome的开发工具中有请求:

这是我正在使用的标记:
<a href="http://www.mysite.com/download" class="btn btn-primary"><span class="glyphicon glyphicon-star"></span> Download to Computer</a>
Run Code Online (Sandbox Code Playgroud)
任何想法为什么字体可能呈现为空框?StackOverflow上的前一个答案都指向不正确的字体路径,这不是这里的路径是正确的.
我正在编写一些单元测试来测试Laravel 5应用程序中的API端点,并且许多端点需要用户身份验证.我没有在每个测试中使用相同的用户帐户创建代码,而是想要RegistersUsers在测试类上定义一个特征,它将具有一个registerUser()方法.
我的tests目录的目录结构是这样的:
/tests
/Traits
RegistersUsers.php
TestCase.php
UserTest.php
Run Code Online (Sandbox Code Playgroud)
我已命名TestCase.php并UserTest.php添加此命名空间声明:
namespace MyappTests;
Run Code Online (Sandbox Code Playgroud)
而且我RegistersUsers.php像这样命名:
namespace MyappTests\Traits;
Run Code Online (Sandbox Code Playgroud)
我UserTest看起来像这样,使用命名空间和use声明,以便我可以利用RegistersUsers.
<?php
namespace MyappTests;
use MyappTests\Traits\RegistersUsers;
class UserTest extends TestCase
{
use RegistersUsers;
// ... rest of the class
Run Code Online (Sandbox Code Playgroud)
但是,当我运行测试时,PHPUnit死于致命错误:
在第9行/home/vagrant/demo-app-net/tests/UserTest.php中找不到Trait'MyappTests\Traits\RegistersUsers'
据我所知,我的命名空间是正确的,应该找到我的特点.我一直在与这个圈子四处走动,似乎无法弄明白.
我有一个基本表单设置允许用户更改他们的电子邮件地址,我在更改电子邮件之前正在对其进行以下验证:
// Set up the form validation
$validator = Validator::make(
Input::all(),
array(
'email' => 'email|unique:users',
'password' => 'required'
)
);
// If validation fails, redirect to the settings page and send the errors
if ($validator->fails())
{
return Redirect::route('settings')->withErrors($validator)->withInput();
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但在此基本验证后,我想检查用户是否提供了正确的密码.为此,我正在使用Laravel的基本身份验证库执行以下操作:
// Find the user and validate their password
$user = Auth::user();
if (!Auth::validate(array('username' => $user->username, 'password' => Input::get('password'))))
{
die("failed to authenticate");
}
Run Code Online (Sandbox Code Playgroud)
而不是处理逻辑告诉用户他们的密码本身不正确,我宁愿只是在password输入中添加一个表单错误,所以它就像常规表单验证一样显示.像这样的东西:
if (!Auth::validate(array('username' => $user->username, 'password' => Input::get('password'))))
{
$validator->addError('password', 'That password is incorrect.');
return …Run Code Online (Sandbox Code Playgroud) 我正在使用Codeception库为我的Laravel应用程序编写测试.我正在使用Laravel5模块,并配置了cleanup这意味着所有测试都将在数据库事务中运行,这样我的测试数据库就不会充满测试数据.
我正在测试的其中一个端点通过表单请求设置了以下验证规则:
public function rules()
{
return ['user_id' => 'required|exists:users,id'];
}
Run Code Online (Sandbox Code Playgroud)
我写入POST到此端点的测试如下:
public function store(ApiTester $I)
{
// Create a couple of users
$users = factory(\App\Models\User::class, 2)->create();
$I->wantTo('ask someone to be my friend');
$I->authenticateAs($users[0]);
$I->sendPOST('users/' . $users[0]->id . '/friendships', [
'user_id' => $users[1]->id
]);
$I->seeResponseCodeIs(201);
}
Run Code Online (Sandbox Code Playgroud)
此测试总是失败.在调查之后,我可以看到它失败了,因为该请求由于exists:users,id规则而未通过验证.如果我将Codeception设置更改为不在事务中执行测试,Laravel的验证器可以成功地看到我在测试开始时创建的两个用户的存在并且测试通过.
所以,我的问题是,有什么办法可以维护我在数据库事务中包装每个测试的行为,并让Laravel的验证器能够看到我在测试中创建的记录吗?
与HTML5一起出现了一组新的输入类型.其中一个是date在Chrome中,这个输入产生一个很好的原生日期选择器,如下所示.

它还在移动设备上提供原生日期选择器,这是我使用新输入类型的主要优势.
但是,在Firefox(23.0.1)和IE(10)上,未显示本机日期选择器,输入被视为普通文本输入.在这些情况下,我想回到Javascript日期选择器.
这是用于运行AngularJS的站点,当前的datepicker插件是bootstrap-datepicker.如果浏览器支持本机日期选择器,那么禁用此插件的最简单方法是什么?我是否只需检查浏览器是否支持date输入类型并禁用插件(如果是这种情况)?
在我的申请中,我试图计算格林尼治标准时间(英国时间)午夜时间.目前我正在这样做:
$now = new DateTime();
$timeToMidnight = $now->setTimezone(new DateTimeZone('Europe/London'))->diff(new DateTime('tomorrow'))->format('%h hours, %i minutes and %s seconds');
Run Code Online (Sandbox Code Playgroud)
代码正在运行,但似乎落后一小时(使用GMT -1).目前时间是晚上11:49,输出是这样的:
1 hours, 10 minutes and 36 seconds
Run Code Online (Sandbox Code Playgroud)
我已经仔细检查了我php.ini,我也将时区设置为GMT:
date.timezone = Europe/London
Run Code Online (Sandbox Code Playgroud)
检查也证实了这一点phpinfo().
是什么赋予了?为什么我的应用程序没有使用正确的时区?
对于我的项目的基本功能,我一直在定义实体框架模型,然后使用Visual Studio的脚手架功能来实现CRUD功能(Right Click- > Add- > New Scaffolded Item...).
如果我在完成此操作后需要对模型进行更改,如何使脚手架控制器和视图更新到最新的模型更改?例如,我现在需要向模型添加新属性并更改现有属性的数据类型,但控制器和视图可能在更改后不起作用.
我总是可以重新绞靠,但我已经对控制器和视图进行了一些更改,我不想丢失.是我自己做出改变的唯一解决方案吗?
我在我的应用程序中为Angular资源编写了一个自定义方法来激活用户.API端点是,/users/activate并且必须将激活码PUT到此端点.这就是我的资源:
app.factory('User', ['$resource',
function($resource){
return $resource('http://api.site.dev/users/:id', {id: '@id'}, {
activate: {method:'PUT', params:{code: '@code'}, url: 'http://api.site.dev/users/activate'}
});
}]);
Run Code Online (Sandbox Code Playgroud)
我正在我的控制器中使用它,如下所示:
User.activate({code: $routeParams.code});
Run Code Online (Sandbox Code Playgroud)
正如您在Chrome上的网络日志中所看到的,激活码正在查询字符串和请求正文中发送:

如何更改资源只是在请求正文中而不是在查询字符串中传递激活代码?
我正在编写一个单元测试,说明应该使用 bcrypt 对用户密码进行散列。要断言这一点,我需要能够检查字符串是否看起来像 bcrypt 哈希。
我找不到一个函数来告诉我在字符串上使用了什么散列算法,除了正则表达式之类的方法之外,还有其他方法可以做到吗?
我应该在免费声明之前说这是我对ASP.NET开发的新手并不真正理解数据库上下文,尽管花费了最后一小时阅读文档.当我构建我的ASP.NET MVC 5应用程序时,我选择了单独的用户帐户身份验证.Visual Studio创建了一个名为的文件IdentityModels.cs,并在其中定义了一个ApplicationUser类和一个ApplicationDbContext类.
我做了一些开发工作,我的CRUD控制器ApplicationDbContext用来与数据库通信,在每个控制器上都有这个私有属性:
private ApplicationDbContext db = new ApplicationDbContext();
Run Code Online (Sandbox Code Playgroud)
在控制器操作中,我然后执行以下操作:
return View(db.Trains.ToList());
Run Code Online (Sandbox Code Playgroud)
我想整理这个数据库上下文,但我需要先了解它.我的主要问题是:
ApplicationDbContext类替换定义的类IdentityModels.cs吗?ApplicationDbContext类从派生IdentityDbContext<ApplicationUser>,这是否意味着我应该有一个由Visual Studio提供我的用户身份验证的东西,我自己的代码单独的数据库环境?我认为我的最终目标是使用我自己的数据库上下文,DatabaseContext该上下文被用于我的所有控制器继承的基本控制器中.然后我只有一个地方实例化数据库上下文,而不是在每个控制器中.
谁知道,我可能在想这个错误的方法.似乎每个人都有自己喜欢的方式来解决这个问题.
谢谢!
php ×5
laravel ×3
angularjs ×2
asp.net-mvc ×2
javascript ×2
laravel-5 ×2
phpunit ×2
api ×1
asp.net ×1
bcrypt ×1
c# ×1
codeception ×1
css ×1
datepicker ×1
datetime ×1
forms ×1
glyphicons ×1
hash ×1
laravel-4 ×1
put ×1
rest ×1
scaffolding ×1
timezone ×1
traits ×1
transactions ×1
validation ×1