Bolt 4 通过 Cron 以编程方式添加记录
Bolt 4 Add Records Programmatically via Cron
想要以编程方式将内容添加到 bolt 4 但是实际上只能看到 1 个 Bolt 3 示例。
希望通过 cron 在长 运行 中将此功能 运行 但是此功能在 Bolt 4 中看起来也是次要的,但我肯定可以搞砸一个运行.
的方式
在 Bolt 3 中建议以下内容:
$values = file('myfile.csv');
// now create an associative array to use below
$record = $this->app['storage']->getEmptyContent($contenttypeslug);
$record->setValues($values);
$id = $this->app['storage']->saveContent($record);
但这似乎不起作用,因为我猜这次更新中发生了很多变化。我打算通过 api 然后 运行 获取我的数据,如果有知情者可以建议如何解决这个问题?
我已经开始研究使用 Bolt\Repository\ContentRepository;
和 Bolt\Controller\Backend\ContentEditController
,方法是尝试在此处挑选类似的功能:
https://github.com/bobdenotter/conimex/blob/master/src/Import.php
然而,这对我来说似乎过于复杂,无法完全区分,只想要一个更简单的例子,可能是图像/图像库。
到目前为止,我已经开始使用命令行功能,然后可以使用系统 cron 以所需的频率 运行 它。首先,由于多种原因,下面的代码无法正常工作 getFieldToUpdate
似乎抛出一个私有函数错误并且似乎无法通过该错误。
public function import(): void
{
$user = $this->getUser();
/** @var Content $content */
$slug = 'test-property';
$contentTypeSlug = 'properties';
$contentType = $this->config->getContentType($contentTypeSlug);
$content = $this->contentRepository->findOneBySlug($slug, $contentType);
if (! $content) {
$content = new Content($contentType);
$content->setStatus('published');
$content->setAuthor($user);
}
$content->setFieldValue("bedrooms", 2);
//$field = $this->contentEditController->getFieldToUpdate($content, 'bedrooms');
//$this->contentEditController->updateField($field, $item, null);
//$content->setFieldValue($key, $item);
$this->em->persist($content);
$this->em->flush();
}
private function getUser()
{
$user = null;
// Fall back to the first user we can find.
if (! $user) {
$user = $this->userRepository->findOneBy([]);
}
return $user;
}
想要以编程方式将内容添加到 bolt 4 但是实际上只能看到 1 个 Bolt 3 示例。
希望通过 cron 在长 运行 中将此功能 运行 但是此功能在 Bolt 4 中看起来也是次要的,但我肯定可以搞砸一个运行.
的方式在 Bolt 3 中建议以下内容:
$values = file('myfile.csv');
// now create an associative array to use below
$record = $this->app['storage']->getEmptyContent($contenttypeslug);
$record->setValues($values);
$id = $this->app['storage']->saveContent($record);
但这似乎不起作用,因为我猜这次更新中发生了很多变化。我打算通过 api 然后 运行 获取我的数据,如果有知情者可以建议如何解决这个问题?
我已经开始研究使用 Bolt\Repository\ContentRepository;
和 Bolt\Controller\Backend\ContentEditController
,方法是尝试在此处挑选类似的功能:
https://github.com/bobdenotter/conimex/blob/master/src/Import.php
然而,这对我来说似乎过于复杂,无法完全区分,只想要一个更简单的例子,可能是图像/图像库。
到目前为止,我已经开始使用命令行功能,然后可以使用系统 cron 以所需的频率 运行 它。首先,由于多种原因,下面的代码无法正常工作 getFieldToUpdate
似乎抛出一个私有函数错误并且似乎无法通过该错误。
public function import(): void
{
$user = $this->getUser();
/** @var Content $content */
$slug = 'test-property';
$contentTypeSlug = 'properties';
$contentType = $this->config->getContentType($contentTypeSlug);
$content = $this->contentRepository->findOneBySlug($slug, $contentType);
if (! $content) {
$content = new Content($contentType);
$content->setStatus('published');
$content->setAuthor($user);
}
$content->setFieldValue("bedrooms", 2);
//$field = $this->contentEditController->getFieldToUpdate($content, 'bedrooms');
//$this->contentEditController->updateField($field, $item, null);
//$content->setFieldValue($key, $item);
$this->em->persist($content);
$this->em->flush();
}
private function getUser()
{
$user = null;
// Fall back to the first user we can find.
if (! $user) {
$user = $this->userRepository->findOneBy([]);
}
return $user;
}