Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bard: Object instead of array with raw modifier #11254

Open
carstenjaksch opened this issue Dec 13, 2024 · 1 comment
Open

Bard: Object instead of array with raw modifier #11254

carstenjaksch opened this issue Dec 13, 2024 · 1 comment

Comments

@carstenjaksch
Copy link

Bug description

I have a Bard field with a pretty basic structure: h2, h3, p, h3, p, ... (see saved content as markdown at the end)

Using {{ richtext|raw|dump }} outputs an array with the following structure for each other Bard field where I have only one block element (maybe with a hardBreak):

array:1 [▼ // vendor/statamic/cms/src/Modifiers/CoreModifiers.php:622
  0 => array:3 [▼
    "type" => "paragraph"
    "attrs" => array:2 [▼
      "textAlign" => "left"
      "class" => null
    ]
    "content" => array:3 [▼
      0 => array:2 [▼
        "type" => "text"
        "text" => "Ein Anruf genügt – wir kommen kostenlos direkt zu Ihnen und besichtigen Ihr Fahrzeug vor Ort."
      ]
      1 => array:1 [▼
        "type" => "hardBreak"
      ]
      2 => array:3 [▼
        "type" => "text"
        "marks" => array:1 [▶]
        "text" => "Lehnen Sie sich einfach zurück!"
      ]
    ]
  ]
]

But for this special field with more than one block element, the following is returned:

array:1 [▼ // vendor/statamic/cms/src/Modifiers/CoreModifiers.php:622
  0 => 
Statamic\Fields
\
Values {#13243
    #instance: 
Illuminate\Support
\
Collection {#13246
      #items: array:2 [
        "type" => "text"
        "text" => 
Statamic\Fields
\
Value {#13235
          -resolver: null
          #raw: "
<h2>Sorgenfrei zur Schadensregulierung – Unfallgutachten von Gutachterix für mehr Entschädigung</h2><h3>100% kostenlos für Unfallgeschädigte</h3><p>Waren Sie in
 ▶
"
          #handle: "text"
          #fieldtype: 
Statamic\Fieldtypes
\
Text {#13232}
          #augmentable: null
          #shallow: false
        }
      ]
      #escapeWhenCastingToString: false
    }
  }
]

I expect the same structure as for the other Bard fields – with each block element as a separate array in content.

The full markdown content of said field (correct structure):

      richtext:
        -
          type: heading
          attrs:
            textAlign: left
            level: 2
          content:
            -
              type: text
              text: 'Sorgenfrei zur Schadensregulierung – Unfallgutachten von Gutachterix für mehr Entschädigung'
        -
          type: heading
          attrs:
            textAlign: left
            level: 3
          content:
            -
              type: text
              text: '100% kostenlos für Unfallgeschädigte'
        -
          type: paragraph
          attrs:
            textAlign: left
            class: null
          content:
            -
              type: text
              text: 'Waren Sie in einen Unfall verwickelt und sind nicht schuldig? Dann kontaktieren Sie uns, damit wir Sie zu Ihrem Kfz-Schaden technisch beraten. Für die Erstberatung zahlen Sie nichts. Vertrauen Sie uns als neutralen und unabhängigen Kfz-Gutachter.'
        -
          type: heading
          attrs:
            textAlign: left
            level: 3
          content:
            -
              type: text
              text: '38% mehr Entschädigung durch unabhängige Expertise'
        -
          type: paragraph
          attrs:
            textAlign: left
            class: null
          content:
            -
              type: text
              text: 'Sie möchten die maximale Entschädigung für den fremdverschuldeten Unfall, der Sie viele Nerven kostet? Dann vertrauen Sie keinesfalls dem Versicherungsgutachter oder einer Werkstatt. Versicherungen haben ein Interesse daran, entstandene Schäden und Kosten „kleinzureden“ und die Kosten im eigenen Sinne zu drücken. Kostenvoranschläge von Werkstätten betreffen nur die Kosten der Reparatur und lassen die Wertminderung ihres Fahrzeugs und eine Nutzungsausfallentschädigung unberücksichtigt. Wir als unabhängige Sachverständige haben das Ziel, maximale Entschädigungszahlungen für Sie zu erzielen und wollen gerecht das meiste für Sie herausholen – Verlassen Sie sich auf unsere Expertise und langjährige Erfahrung.'
        -
          type: heading
          attrs:
            textAlign: left
            level: 3
          content:
            -
              type: text
              text: '0 km Anfahrtsweg'
        -
          type: paragraph
          attrs:
            textAlign: left
            class: null
          content:
            -
              type: text
              text: 'Unser Team von Gutachterix steht Ihnen von Beginn an zur Seite und erklärt Ihnen alle Details zu den Schäden an Ihrem Wagen. Für die Fahrzeugbesichtigung und Schadenaufnahme kommen wir kostenfrei direkt an Ihren Wunschort, sodass Sie keinen Anfahrtsweg haben. Wir besuchen sie zu Hause, begutachten das Fahrzeug am Unfallort oder fahren zu Ihrem Arbeitsplatz. Als unabhängiger Kfz-Gutachter erstellen wir nicht nur Unfallgutachten und sichern Beweise, sondern stellen auch die Schadenhöhe fest, dokumentieren die Wertminderung oder den Restwert des Fahrzeugs, erstellen Reparaturbestätigungen oder veranschlagen Kosten für Reparaturen. Außerdem kommunizieren wir mit Versicherungen, Anwälten oder Werkstätten und kümmern uns bei Bedarf für Sie um einen Ersatzwagen. Melden Sie sich gerne bei uns, wir beraten Sie!'

How to reproduce

Use more than one block element in Bard and dump the raw data with {{ bard_field|raw|dump }}.

My fieldset config:

title: Fließtext
fields:
  -
    handle: richtext
    field:
      buttons:
        - h2
        - h3
        - h4
        - lead
        - bold
        - italic
        - unorderedlist
        - orderedlist
        - removeformat
        - quote
        - anchor
        - image
        - table
        - alignleft
        - aligncenter
        - alignright
      smart_typography: true
      remove_empty_nodes: true
      type: bard
      display: Fließtext
      localizable: true
      collapse: true
      sets:
        text:
          display: Text
          icon: text-formatting-initial-letter
          sets:
            buttons:
              display: Buttons
              fields:
                -
                  import: button_group

Logs

No response

Environment

Environment
Application Name: Gutachterix
Laravel Version: 11.34.2
PHP Version: 8.3.14
Composer Version: 2.7.7
Environment: local
Debug Mode: ENABLED
URL: gutachterix.test
Maintenance Mode: OFF
Timezone: Europe/Berlin
Locale: en

Cache
Config: NOT CACHED
Events: NOT CACHED
Routes: NOT CACHED
Views: CACHED

Drivers
Broadcasting: reverb
Cache: file
Database: sqlite
Logs: stack / single
Mail: smtp
Queue: sync
Session: file

Statamic
Addons: 7
Sites: 2 (Gutachterix, Clever-Immo)
Stache Watcher: Enabled (auto)
Static Caching: Disabled
Version: 5.42.0 PRO

Statamic Addons
jacksleight/statamic-bard-texstyle: 3.4.1
ryanmitchell/statamic-translation-manager: 2.0.0
statamic/collaboration: 1.0.0
studio1902/statamic-peak-browser-appearance: 3.6.0
studio1902/statamic-peak-commands: 8.12.0
studio1902/statamic-peak-seo: 8.18.0
studio1902/statamic-peak-tools: 6.6.0

Installation

Starter Kit using via CLI

Additional details

No response

@carstenjaksch
Copy link
Author

I expect the same structure as for the other Bard fields – with each block element as a separate array in content.

That is wrong, was too late yesterday. Of course every block element should have it's own array with a type of heading or paragraph:

array:1 [▼ // vendor/statamic/cms/src/Modifiers/CoreModifiers.php:622
  0 => array:3 [▼
    "type" => "heading"
    "attrs" => array:2 [▼
      "textAlign" => "left"
      "level" => 2
    ]
    "content" => array:3 [▼
      0 => array:2 [▼
        "type" => "text"
        "text" => "Sorgenfrei zur Schadensregulierung – Unfallgutachten von Gutachterix für mehr Entschädigung"
      ]
    ]
  ]
  1 => array:3 [▼
    "type" => "heading"
    "attrs" => array:2 [▼
      "textAlign" => "left"
      "level" => 3
    ]
    "content" => array:3 [▼
      0 => array:2 [▼
        "type" => "text"
        "text" => "100% kostenlos für Unfallgeschädigte"
      ]
    ]
  ]
  2 => array:3 [▼
    "type" => "paragraph"
    "attrs" => array:2 [▼
      "textAlign" => "left"
      "class" => null
    ]
    "content" => array:3 [▼
      0 => array:2 [▼
        "type" => "text"
        "text" => "Waren Sie in ..."
      ]
    ]
  ]
]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant