PHP code example of putyourlightson / laravel-datastar

1. Go to this page and download the library: Download putyourlightson/laravel-datastar library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

putyourlightson / laravel-datastar example snippets


{{-- datastar/toggle.blade.php --}}

@php
    $enabled = $signals->enabled;
    // Do something with the state and toggle the enabled state.
    $enabled = !$enabled;
@endphp

@mergesignals(['enabled' => $enabled])

@mergefragments
    <span id="button-text">
        {{ $enabled ? 'Disable' : 'Enable' }}
    </span>
@endmergefragments

@php
    $signals = ['foo' => 1, 'bar' => 2];
@endphp

<div data-signals="{{ json_encode($signals) }}"></div>

{{ datastar()->get('path.to.view') }}

{{ datastar()->get('path.to.view', ['offset' => 10]) }}

{{ datastar()->post('path.to.view') }}

{{ datastar()->put('path.to.view') }}

{{ datastar()->patch('path.to.view') }}

{{ datastar()->delete('path.to.view') }}

{{ datastar()->getFragments('path.to.view') }}

@mergefragments
    <div id="new-fragment">New fragment</div>
@endmergefragments

@removefragments('#old-fragment')

@mergesignals(['foo' => 1, 'bar' => 2])

@removesignals(['foo', 'bar'])

@executescript
    alert('Hello, world!');
@endexecutescript

@location('/guide')

// routes/web.php

use App\Http\Controllers\MyController;

Route::resource('/my-controller', MyController::class);

namespace App\Http\Controllers;

use Illuminate\Routing\Controller;
use Putyourlightson\Datastar\DatastarEventStream;
use Symfony\Component\HttpFoundation\StreamedResponse;

class MyController extends Controller
{
    use DatastarEventStream;

    public function index(): StreamedResponse
    {
        return $this->getStreamedResponse(function() {
            $signals = $this->getSignals();
            $this->mergeSignals(['enabled' => $signals->enabled ? false : true]);
            $this->mergeFragments('
                <span id="button-text">' . ($signals->enabled ? 'Enable' : 'Disable') . '</span>
            ');
        });
    }
}

$this->mergeFragments('<div id="new-fragment">New fragment</div>');

$this->removeFragments('#old-fragment');

$this->mergeSignals(['foo' => 1, 'bar' => 2]);

$this->removeSignals(['foo', 'bar']);

$this->executeScript('alert("Hello, world!")');

$this->location('/guide');

$this->renderDatastarView('datastar.toggle', ['enabled' => true]);

@php
    // Getting signal values.
    $username = $signals->username;
    $username = $signals->get('username');
    $username = $signals->get('user.username');
    
    // Setting signal values.
    $username = $signals->username('bobby');
    $username = $signals->set('username', 'bobby');
    $username = $signals->set('user.username', 'bobby');
    $username = $signals->setValues(['user.username' => 'bobby', 'success' => true]);
    
    // Removing signal values.
    $username = $signals->remove('username');
    $username = $signals->remove('user.username');
@endphp