我正在尝试删除对象中的前两项.例如,如果我想从数组中删除前两项,我将使用array_slice($ arrayName,2).
我在我的对象上尝试了这个(嘿,为什么不呢?我知道它在技术上不是一个数组,但我很乐观)并且它不起作用.
搜索时,我发现的只是从数组中删除项目的方法.
$categories = array_slice(Mage::getModel('catalog/category')->getCollection()->addAttributeToSelect('*'), 2);
foreach($categories as $category){
echo "<div class='col'>{$category->getName()}</div>";
}
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我想$categories在通过foreach循环运行它之前从(它们是'Root Category'和'Default')对象中删除前两个类别.最好的方法是什么?我知道我能做到;
if($category->getName() != 'Root Category' && $category->getName() != 'Default'){
echo $category->getName();
}
Run Code Online (Sandbox Code Playgroud)
但这感觉就像一个肮脏的解决方案
在阅读Patrick Q的评论之后,我意识到这确实是一系列对象.所以我现在的问题是,为什么在将array_slice应用于此数组时会导致空白屏幕?未应用array_slice时,循环正常工作.
忽略最后一次编辑.它是一个对象.
至于可能的重复,虽然问题(问题)确实帮助我解决了我的问题,但我认为,本质上它们是不同的问题.这个问题的核心是围绕找到对象的array_slice()的有用替代方案.另一方面,链接的问题想要找到一种方法,特别是基于下拉属性过滤Magento集合.虽然他们可能已到达同一目的地,但目的和旅程却截然不同.
我正在构建一个小型迷你瓦片引擎游戏.我目前正致力于实现简单的基于块的碰撞检测,但是我遇到了真正的问题.我用谷歌搜索了几个小时看不同的实现,但似乎无法理解它.我现在的工作(目前只在检测到碰撞时,玩家移动右),大多是工作,但允许玩家通过障碍物的底部.碰撞使用法线贴图阵列来检测碰撞,地图中任何2的值都是实体对象.
我理解我需要做的概念 - 在移动我的播放器之前,计算播放器最终会进入的单元格.检查分配给该单元格的值.如果是2,请勿让玩家移动.
我的问题是弄清楚玩家将在技术上最终进入的细胞,在点上,玩家可以同时在4个细胞中.我尝试过使用原点和4角检测来解决这个问题,但我无法让它发挥作用.
JS Fiddle HERE - https://jsfiddle.net/j1xqxze8/
我的守则;
var Player = function() {
this.width = 16;
this.height = 16;
this.position = {};
this.position.x = 32;
this.position.y = 32;
this.speed = 8;
this.render = function() {
window.context.fillStyle = 'white';
window.context.fillRect(this.position.x, this.position.y, this.width, this.height);
};
var _self = this;
this.didCollide = function(dir) {
if(dir == 'right'){
var newBlock = window.tileMap.getCell(Math.floor((_self.position.x + _self.width) / 32), Math.floor((this.position.y + this.height / 2) / 32));
if(newBlock == 2)
return true;
} …Run Code Online (Sandbox Code Playgroud) 问题
按照我刚才的问题在这里,有人指出,我认为我不应该试图在Laravel厂(即我应该填补他们在自己的工厂),以填补相关的模型.
但是,我有一个观察者在创建过程中查找相关数据并尝试填充相关模型(这样我就可以使用create::方法和单个多步骤形式创建多个相关实体).现在,我需要添加一个检查以查看此数据是否填充在观察者中,因此我不必在工厂中指定它.
这样做,我现在在尝试为数据库设定种子时遇到分段错误.我已经将原因缩小到这一行 - 没有isset检查,它工作正常(除了$ data ['day']没有指定,因此检查);
分段故障(核心转储)
if(isset($data['day'])) $event->day->fill($data['day']);
Run Code Online (Sandbox Code Playgroud)
相关代码
EventFactory.php
$factory->define(App\Event::class, function (Faker $faker) {
return [
"name" => "A Test Event",
"description" => $faker->paragraphs(3, true),
"event_start_date" => today(),
"event_opening_date" => today(),
"event_closing_date" => tomorrow(),
"user_id" => 1,
"banner_id" => 1,
"gallery_id" => 1,
"related_event_id" => 1,
"status" => "published",
"purchase_limit" => 1000,
"limit_remaining" => 1000,
"delivery_method" => "collection",
"merchandise_delivery_method" => "collection"
];
});
Run Code Online (Sandbox Code Playgroud)
EventObserver.php
public function created($event){
# get all …Run Code Online (Sandbox Code Playgroud) 我有一个包含多个部分的表单。每个部分都使用 Bootstrap 4 验证手动验证(无需提交真实表单)。这适用于下面的代码;
let eventCreationForm = $(".event-creation-form");
if (!eventCreationForm[0].checkValidity()) {
eventCreationForm.find(":submit").click();
}
Run Code Online (Sandbox Code Playgroud)
但是,我只想突出显示无效的输入。即,不要以绿色突出显示有效输入。而不是为此覆盖引导程序样式,我想我会尝试:valid从有效输入中删除伪类。但是,我找不到任何人这样做的例子。我在 SO 上查看的问题只是通过 CSS 更改样式。
我认为这样的事情可能会奏效,
eventCreationForm.find(":valid").removeClass(":valid");但我想它不会,因为它不是真正的课程。
下面的例子有一个调用堆栈错误,但这只是这个例子。
let eventCreationForm = $(".event-creation-form");
if (!eventCreationForm[0].checkValidity()) {
eventCreationForm.find(":submit").click();
}
Run Code Online (Sandbox Code Playgroud)
$(document).ready(function(){
var forms = document.getElementsByClassName('needs-validation');
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
$(".manual-submit").click(function(){
let eventCreationForm = $(".event-creation-form");
if (!eventCreationForm[0].checkValidity()) {
eventCreationForm.find(":submit").click();
}
})
})Run Code Online (Sandbox Code Playgroud)
问题
我不能让 Laravel 忽略在 Eloquent 的create方法中或为数据库播种时不存在于数据库中的字段。在下面的示例中,事件表中不存在“天”字段。但是,我需要它出现在数组中,以便我可以在 EventObserver.php 中使用它,以便在创建 $event 的同时创建 $event->day。我意识到我可以Day在它自己的工厂中创建它,我只是想知道这是否可能,甚至是可取的。
错误
未找到列:“字段列表”中的 1054 列“天”未知
我的代码
我正在尝试将一个 Observer 方法附加到我的事件模型,该created方法监听该方法,以便我可以为每个关系创建一个新对象。在我的 EventObserver 中,我有以下内容;
public function created(Event $event)
{
//get all attributes
$data = $event->getAttributes();
# fill any related models
$event->day->fill($data['day']);
# save event
$event->push();
}
Run Code Online (Sandbox Code Playgroud)
在我的 Event Factory 中,我有这个;
//EventFactory.php
$factory->define(App\Event::class, function (Faker $faker) {
return [
"name" => "A Test Event",
"description" => $faker->paragraphs(3, true),
"event_start_date" => today(),
"event_opening_date" => today(),
"event_closing_date" => tomorrow(),
"user_id" …Run Code Online (Sandbox Code Playgroud) 我正在开发一个电子应用程序,该应用程序试图从 unsplash API 下载照片并将其设置为墙纸。当我调用 API 时,我得到 200 OK 状态并获取下载 URL,但是当我尝试使用 axios 流方法下载照片时,我收到以下错误:
UnhandledPromiseRejectionWarning:TypeError [ERR_INVALID_ARG_TYPE]:“url”参数必须是字符串类型。接收类型未定义
这是功能代码:
ipcMain.on("getRandomWallpaper", async event => {
const randomApi = `${apiGateway}/?client_id=${unsplashKey}`;
const request = await axios({
method: "get",
url: randomApi
});
if (request.status === 200) {
const downloadUrl = request.data.links.download;
const imagePath = "./images";
const download_image = async (downloadUrl, imagePath) => {
await axios({
downloadUrl,
responseType: "stream"
}).then(
response =>
new Promise((resolve, reject) => {
response.data
.pipe(fs.createWriteStream(imagePath))
.on("finish", () => resolve())
.on("error", e => reject(e));
})
); …Run Code Online (Sandbox Code Playgroud) javascript ×3
php ×3
laravel ×2
arrays ×1
axios ×1
bootstrap-4 ×1
canvas ×1
electron ×1
eloquent ×1
html ×1
magento ×1
node.js ×1
validation ×1