我正在为客户构建一个应用程序,我在beck端使用Laravel5开发Web服务,我将使用Smart Admin主题,特别是Ajax版本来使用它.
我已经使用过这个主题的HTML版本,我仍然使用Laravel作为后端.我可以简单地使用Laravel提供的Blade模板引擎并将数据注入视图中.
但是现在因为我将使用Ajax版本,我应该如何将数据模板化到视图中.我可以请求Web服务获取数据,它将以JSON格式返回.这部分对我来说很清楚,就像我以前做过的那样.
大多数小部件都有内置的集成,例如jquery数据表和主题中使用的完整日历库.我可以看到这里会注入数据,但论坛和其他内容如何.我应该通过使用Jquery来操纵DOM,还是有更好的方法.
Angular提供了一种方法,我可以双向数据绑定传入的数据,我可以使用ng-repeat将其注入表和无序列表,但我将如何在此处完成此操作.我可以使用模板系统吗?
我正在使用Mapbox和Leaflet处理地图,我应该让用户绘制多边形并计算并显示该多边形的数量,我还需要让用户绘制折线并显示折线的距离.
我已经找到了多边形区域特征,但我无法弄清楚如何计算折线的距离.
我的代码如下:
loadScript('https://api.tiles.mapbox.com/mapbox.js/plugins/leaflet-draw/v0.2.2/leaflet.draw.js', function(){
loadScript('https://api.tiles.mapbox.com/mapbox.js/plugins/leaflet-geodesy/v0.1.0/leaflet-geodesy.js', function(){
var featureGroup = L.featureGroup().addTo(map);
var drawControl = new L.Control.Draw({
edit: {
featureGroup: featureGroup
},
draw: {
polygon: true,
polyline: true,
rectangle: false,
circle: false,
marker: false
}
}).addTo(map);
map.on('draw:created', showPolygonArea);
map.on('draw:edited', showPolygonAreaEdited);
function showPolygonAreaEdited(e) {
e.layers.eachLayer(function(layer) {
showPolygonArea({ layer: layer });
});
}
function showPolygonArea(e) {
var type = e.layerType,
layer = e.layer;
if (type === 'polygon') {
featureGroup.clearLayers();
featureGroup.addLayer(e.layer);
e.layer.bindPopup(((LGeo.area(e.layer) / 1000000) * 0.62137).toFixed(2) + ' mi<sup>2</sup>');
e.layer.openPopup();
}
if (type === …Run Code Online (Sandbox Code Playgroud) 我试图理解PHP中的依赖注入,我发现在Laravel中有两种方法可以做到这一点.
那么让我们说我有一个Foo这样的课程:
class Foo{
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个被称为Bar依赖的类,Foo所以我可以这样做:
class Bar{
protected $foo;
public function __construct()
{
$this->foo = new Foo();
}
}
Run Code Online (Sandbox Code Playgroud)
但是在Laravel中,我遇到了类似着色和反射的术语,这些术语允许我这样做:
class Bar{
protected $foo;
public function __construct(Foo $foo)
{
$this->foo = $foo;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要了解的是这两者之间的区别.它们完全相同吗?是否有一个特别的原因我应该优先于另一个?
PS:我是新手,我不确定我是否正确地使用了问题中的行话.
我正在使用Laravel 5处理RESTful应用程序,我正在尝试捕获异常并生成适当的响应.我也在使用tymondesigns/jwt-auth包,所以所有的API响应都是JSend JSON格式.
现在我正试图抓住TokenExpiredException当给定令牌过期时出现的情况.所以我尝试了这个Handler.php:
if($e instanceof TokenExpiredException)
{
return jsend()->error()
->message("Token Expired")
->code(403)
->data([null])
->get();
}
Run Code Online (Sandbox Code Playgroud)
但我仍然无法捕获此异常并返回JSON响应.虽然我可以为其他例外执行此操作,例如:
if ($e instanceof ModelNotFoundException) {
$e = new NotFoundHttpException($e->getMessage(), $e);
return jsend()->error()
->message("404 Model Not Found")
->data([null])
->get();
}
Run Code Online (Sandbox Code Playgroud)
和:
if ($this->isHttpException($e))
{
if($e instanceof NotFoundHttpException)
{
return jsend()->error()
->message("404 Route Not Found")
->data([null])
->get();
}
return $this->renderHttpException($e);
}
Run Code Online (Sandbox Code Playgroud)
如何处理Laravel中的其他异常?
我正在开发一个Laravel 5应用程序,现在应用程序的代码应该在多个laravel 5应用程序中重用,这就是为什么我要创建一个composer包然后我想在任意数量的laravel中安装这个包5个应用程序具有相同的功能并在其上构建.
我是作曲家包开发的新手,特别是使用服务提供商将包挂钩到Laravel 5中.到目前为止,我已经了解到,如果我使用下面的服务提供商,我将能够使用laravel 5应用程序中的路由:
<?php
namespace Uppdragshuset\AO\Tenant;
use Illuminate\Support\ServiceProvider;
class TenantServiceProvider extends ServiceProvider
{
/**
* Bootstrap the application services.
*
* @return void
*/
public function boot()
{
//
}
/**
* Register the application services.
*
* @return void
*/
public function register()
{
include __DIR__.'/routes.php';
}
}
Run Code Online (Sandbox Code Playgroud)
现在要做到这一点,我只需要通过composer将软件包放入任何全新的Laravel 5安装中,然后我只需更新提供者的数组app.php:
Uppdragshuset\AO\Tenant\TenantServiceProvider::class
Run Code Online (Sandbox Code Playgroud)
这对我来说很有意义并且也有效.但是现在我正在开发的软件包也有自己的依赖项,许多依赖软件包也包含laravel 5服务提供程序,所以我必须在laravel5安装中手动包含所有这些以使它们工作.
但我猜测必须有一种方法来在我自己创建的包中注册这些依赖服务提供者,这样我只需要注册我上面提到的一个提供者.问题是我不知道该怎么做,也无法在任何地方找到类似的参考.如何从composer包本身注册多个服务提供者?
最近,我发现自己正在使用 Guzzle,同时向另一台服务器发出请求以发布和获取一些数据(在某些情况下是令牌)。但我收到证书无效错误,我什至尝试获取新.pem证书,但 Guzzle 仍然不接受并不断抛出该错误。所以最后,我按照“互联网”所说的做了:
$guzzleClient = new Client([
'verify' => false
]);
Run Code Online (Sandbox Code Playgroud)
现在,虽然这个解决方案有效,但我不确定它会变得多么不安全。我需要担心吗?如果是,在什么场景下?
我已经开发使用托管AngularJS一个简单的应用在这里.我消费我开发我自己在Laravel的API托管在这里.当我尝试使用Firefox登录应用程序时,它工作正常.我的API接受飞行前的OPTIONS请求,并以200 OK响应.最后,POST请求生成一个令牌,用户已登录.
另一方面,当Chrome发送飞行前OPTIONS请求时,它会收到403返回,它会在控制台中显示此错误:
XMLHttpRequest cannot load http://angulairapi.rohanchhabra.in/auth. Invalid HTTP status code 403
Run Code Online (Sandbox Code Playgroud)
我已尝试通过Postman REST客户端在/ auth上发送OPTIONS请求,并按预期返回200 OK.为什么Chrome会像这样?我错过了什么?
我正在尝试开发一个多租户多数据库应用程序,这基本上意味着每个租户都有自己的数据库、自己的用户、资源等。
当然,当请求进来时,Laravel 需要知道要使用哪个 DB 连接,所以我编写了一个中间件,它基本上解析请求中的 JWT 并查找租户 ID 或用户名,然后简单地连接到租户的数据库。
但是现在我正在使用队列,并且我试图超越连接到主数据库并插入失败作业记录的 laravel 5 的默认行为。
当我深入研究供应商文件时,我发现了一个FailedJobProvider接口:
<?php
namespace Illuminate\Queue\Failed;
interface FailedJobProviderInterface
{
/**
* Log a failed job into storage.
*
* @param string $connection
* @param string $queue
* @param string $payload
* @return void
*/
public function log($connection, $queue, $payload);
/**
* Get a list of all of the failed jobs.
*
* @return array
*/
public function all();
/**
* Get a single failed job.
*
* …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 phpunit 测试我在 laravel 5 中编写的 Web 服务。我是这个测试框架的新手。应用程序使用 JWT 进行身份验证,该身份验证在请求的标头中传递。
我的测试看起来像这样:
$response = $this->call('POST', 'authenticate', [
'username' => 'carparts',
'email' => 'admin@admin.com',
'password' => 'password'
]);
$token = 'Bearer ' . json_decode($response->getContent())->token;
$response = $this->call('POST', 'users', [
"first_name" => "Test",
"last_name" => "Test",
"email" => 'test@test.com',
"password" => "testing",
"role" => "1"
], [], [], [
'Authorization' => $token
]);
dd($response->getContent());
Run Code Online (Sandbox Code Playgroud)
令牌返回正常,但是当我尝试在下一个请求中使用以创建新用户时,它失败说无法从请求中解析令牌。当我request()->headers在中间件中做检查时,即使是这样也不显示标题。我究竟做错了什么?如何使用 PHPUnit 在请求中传递标头?
所以我正在开发一个 Laravel 应用程序,并且我正在尝试优化我的种子,以便它们运行得更快。
http://bensmith.io/speeding-up-laravel-seeders
本指南帮助很大。据此,我应该通过大量插入来最大限度地减少 SQL 查询的数量,并将时间减少到原始播种时间的 10%,这真是太棒了。
所以现在我正在做类似的事情:
$comments = [];
for ($i = 0; $i < 50; $i++) {
$bar->advance();
$comments[] = factory(Comment::class)->make([
'created_at' => Carbon\Carbon::now(),
'updated_at' => Carbon\Carbon::now(),
'comment_type_id' => $comment_types->shuffle()->first()->id,
'user_id' => $users->shuffle()->first()->id,
'commentable_id' => $documents->shuffle()->first()->id,
])->toArray();
}
Comment::insert($comments);
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力。它将查询缩减为单个查询。
但是我还有其他播种机来处理转储,它们更复杂:
$dump = file_get_contents(database_path('seeds/dumps/serverdump.txt'));
DB::table('server')->truncate();
DB::statement($dump);
$taxonomies = DB::table('server')->get();
foreach($taxonomies as $taxonomy){
$bar->advance();
$group = PatentClassGroup::create(['name' => $taxonomy->name]);
preg_match_all('/([a-zA-Z0-9]+)/', $taxonomy->classes, $classes);
foreach(array_pop($classes) as $key => $class){
$type = strlen($class) == 4 ? 'GROUP' : 'MAIN';
$inserted_taxonomies[] …Run Code Online (Sandbox Code Playgroud) laravel ×6
php ×6
laravel-5 ×5
javascript ×3
ajax ×1
angularjs ×1
guzzle6 ×1
http-headers ×1
httprequest ×1
jquery ×1
jsend ×1
laravel-4 ×1
leaflet ×1
mapbox ×1
optimization ×1
phpunit ×1
polyline ×1
queue ×1
security ×1
smartadmin ×1
ssl ×1
testing ×1
type-hinting ×1