Installation
composer require ara-solutions/kiwi-cloud-cms
Ensure your project uses Symfony Flex or manually enable the bundle in config/bundles.php:
AraSolutions\KiwiCloudCmsBundle\KiwiCloudCmsBundle::class => ['all' => true],
First Use Case
php bin/console debug:container | grep kiwi
kiwi.cloud.cms.manager) are autowired.Where to Look First
src/ for core classes (e.g., KiwiCloudCmsManager).Resources/config/services.yaml for service configurations.Data Management
$manager = $this->container->get('kiwi.cloud.cms.manager');
$content = $manager->getContent('page-slug');
$manager->updateContent('page-slug', ['title' => 'New Title']);
Integration with Laravel
config/app.php:
'bindings' => [
AraSolutions\KiwiCloudCmsBundle\Manager\KiwiCloudCmsManager::class
=> AraSolutions\KiwiCloudCmsBundle\Manager\KiwiCloudCmsManager::class,
],
// app/Facades/KiwiCms.php
namespace App\Facades;
use Illuminate\Support\Facades\Facade;
class KiwiCms extends Facade { protected static function getFacadeAccessor() { return 'kiwi.cloud.cms.manager'; } }
Usage:
KiwiCms::getContent('page-slug');
Event-Driven Updates
// In a service provider
$this->app['events']->listen(
'kiwi.cms.content.updated',
function ($content) { /* Sync with DB */ }
);
Caching
$content = Cache::remember("kiwi_cms_{$slug}", now()->addHours(1), function () use ($slug) {
return $manager->getContent($slug);
});
No Official Docs
src/ directory. Key classes likely include:
KiwiCloudCmsManager (core logic).KiwiCloudCmsClient (API wrapper).Symfony vs. Laravel Compatibility
app() helper or bind services manually.Authentication
.env:
KIWI_CMS_API_KEY=your_key_here
KIWI_CMS_API_SECRET=your_secret
Pass these to the manager:
$manager->setCredentials(env('KIWI_CMS_API_KEY'), env('KIWI_CMS_API_SECRET'));
Rate Limiting
try {
$content = $manager->getContent($slug);
} catch (RateLimitException $e) {
sleep(2 ** $attempt++);
retry();
}
Enable Debug Mode
config/kiwi_cms.php (if config exists):
'debug' => env('APP_DEBUG', false),
$manager->setDebug(true);
Mocking for Tests
Mockery to stub the Kiwi CMS client:
$mock = Mockery::mock(AraSolutions\KiwiCloudCmsBundle\Client\KiwiCloudCmsClient::class);
$mock->shouldReceive('getContent')->andReturn(['title' => 'Test']);
$this->app->instance('kiwi.cloud.cms.client', $mock);
Common Errors
Custom Content Types
class ExtendedKiwiCmsManager extends AraSolutions\KiwiCloudCmsBundle\Manager\KiwiCloudCmsManager {
public function getCustomData($type) { /* Custom logic */ }
}
config/app.php.Webhook Handlers
// routes/web.php
Route::post('/kiwi-cms/webhook', [KiwiWebhookController::class, 'handle']);
// app/Http/Controllers/KiwiWebhookController.php
public function handle(Request $request) {
event(new KiwiCmsWebhookReceived($request->all()));
}
Local Overrides
config/packages/ara_solutions_kiwi_cloud_cms.php:
services:
kiwi.cloud.cms.manager:
arguments:
$baseUrl: '%env(KIWI_CMS_CUSTOM_URL)%'
How can I help you explore Laravel packages today?