PHPackages                             riesenia/kendo - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. riesenia/kendo

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

riesenia/kendo
==============

PHP wrapper for Kendo UI widgets

v3.0.5(1y ago)1340.0k↓19.6%5[1 PRs](https://github.com/riesenia/kendo/pulls)1MITPHPPHP ^7.1 || ^8.0

Since Dec 23Pushed 1y ago6 watchersCompare

[ Source](https://github.com/riesenia/kendo)[ Packagist](https://packagist.org/packages/riesenia/kendo)[ RSS](/packages/riesenia-kendo/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (7)Dependencies (3)Versions (18)Used By (1)

PHP wrapper for Kendo UI widgets
================================

[](#php-wrapper-for-kendo-ui-widgets)

[![Build Status](https://github.com/riesenia/kendo/workflows/Test/badge.svg)](https://github.com/riesenia/kendo/actions)[![Latest Version](https://camo.githubusercontent.com/00d81f918471f41e86c3f64b53bc6d255d391a44183de9845ca2d64f1890274c/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f72696573656e69612f6b656e646f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/riesenia/kendo)[![Total Downloads](https://camo.githubusercontent.com/e0945135823f0acc863e1ae9c8cbe0c4b6c571992d271bd01780b1492fbcedaf/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f72696573656e69612f6b656e646f2e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/riesenia/kendo)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)

[Kendo UI](http://www.telerik.com/kendo-ui) is a great JavaScript library. It offers both open-source and commercial editions.

This library provides a wrapper for all Kendo UI widgets. Telerik provides [PHP wrappers](http://www.telerik.com/php-ui) itself, but these are unnecessarily complex and in addition they are paid. Our library is released under the MIT license, so you are free to use it in any project (even commercial projects) as long as the copyright header is left intact.

Installation
------------

[](#installation)

Install the latest version using `composer require riesenia/kendo`

Or add to your *composer.json* file as a requirement:

```
{
    "require": {
        "riesenia/kendo": "~3.0"
    }
}
```

*Note: if you use PHP 5.4 - 5.6 use 1.\* version of this library.*

Usage
-----

[](#usage)

Any widget can be created calling the *create* method of *Kendo* class. For example creating a grid with selector *"#grid"* (resulting in `$("#grid").kendoGrid({ ... })` can be achieved by calling:

```
use Riesenia\Kendo\Kendo; 

echo Kendo::create('Grid')->bindTo('#grid');
```

or by:

```
use Riesenia\Kendo\Kendo; 

echo Kendo::createGrid('#grid');
```

### Setting properties

[](#setting-properties)

Any property can be set by calling *set* method. For adding to properties that are represented by array (or objects), *add* method can be used. Set method can be also used for batch assignment by passing array as the only parameter. To NOT encode passed data, pass them wrapped by `Kendo::js()` call. All method calls can be chained. Examples:

```
use Riesenia\Kendo\Kendo; 

$grid = Kendo::createGrid('#grid');

// set any property
$grid->setHeight(100);

// set property, that should not be encoded
$grid->setChange(Kendo::js('function(e) {
    console.log(this.select());
}'));

// set properties by array
$grid->set([
    'height' => 100,
    'change' => Kendo::js('function(e) {
        console.log(this.select());
    }')
]);

// add to property
$grid->addColumns(null, 'Name')
    ->addColumns(null, ['field' => 'Surname', 'encoded' => false]);

// pass DataSource object
$grid->setDataSource(Kendo::createDataSource());
```

### Complex example

[](#complex-example)

Creating code for grid as in [this example](https://demos.telerik.com/kendo-ui/grid/local-data-binding "Grid - binding to local data"):

```
use Riesenia\Kendo\Kendo; 

$model = Kendo::createModel()
    ->addField('ProductName', ['type' => 'string'])
    ->addField('UnitPrice', ['type' => 'number'])
    ->addField('UnitsInStock', ['type' => 'number'])
    ->addField('Discontinued', ['type' => 'boolean']);

$dataSource = Kendo::createDataSource()
    ->setData(Kendo::js('products'))
    ->setSchema(['model' => $model])
    ->setPageSize(20);

echo Kendo::createGrid('#grid')
    ->setDataSource($dataSource)
    ->setHeight(550)
    ->setScrollable(true)
    ->setSortable(true)
    ->setFilterable(true)
    ->setPageable(['input' => true, 'numeric' => false])
    ->setColumns([
        'ProductName',
        ['field' => 'UnitPrice', 'title' => 'Unit Price', 'format' => '{0:c}', 'width' => '130px'],
        ['field' => 'UnitsInStock', 'title' => 'Units In Stock', 'width' => '130px'],
        ['field' => 'Discontinued', 'width' => '130px']
    ]);
```

### Observable (MVVM)

[](#observable-mvvm)

Rendering for [Kendo observable](https://demos.telerik.com/kendo-ui/mvvm/index "MVVM - basic usage") is slightly different. Predefined variable name is *viewModel*, but this can be overridden by the method *variableName*. Example:

```
use Riesenia\Kendo\Kendo; 

echo Kendo::createObservable('#view')
    ->variableName('myMvvm')
    ->setFirstName('John')
    ->setLastName('Doe')
    ->setDisplayGreeting(Kendo::js('function() {
        alert("Hello, " + this.get("firstName") + " " + this.get("lastName") + "!!!");
    }'));
```

This will output:

```
myMvvm = kendo.observable({
    "firstName": "John",
    "lastName": "Doe",
    "displayGreeting": function () {
        alert("Hello, " + this.get("firstName") + " " + this.get("lastName") + "!!!");
    }
});
kendo.bind($("#view"), myMvvm);
```

###  Health Score

45

—

FairBetter than 93% of packages

Maintenance34

Infrequent updates — may be unmaintained

Popularity37

Limited adoption so far

Community14

Small or concentrated contributor base

Maturity77

Established project with proven stability

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~220 days

Recently: every ~555 days

Total

17

Last Release

636d ago

Major Versions

v1.4.1 → v2.0.02017-10-11

v2.0.0 → v3.0.02018-01-23

PHP version history (5 changes)v1.0.0PHP &gt;=5.4.0

v1.3.0PHP &gt;=5.4

v2.0.0PHP &gt;=7.0

v3.0.0PHP &gt;=7.1

v3.0.4PHP ^7.1 || ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/40c7ed7cfaebeddae57ac4a376c8f21df56dd2f38821b7ba92ea1312ef8020c8?d=identicon)[riesenia](/maintainers/riesenia)

---

Top Contributors

[![segy](https://avatars.githubusercontent.com/u/1355459?v=4)](https://github.com/segy "segy (41 commits)")

###  Code Quality

Code StylePHP CS Fixer

### Embed Badge

![Health badge](/badges/riesenia-kendo/health.svg)

```
[![Health](https://phpackages.com/badges/riesenia-kendo/health.svg)](https://phpackages.com/packages/riesenia-kendo)
```

###  Alternatives

[mgallegos/laravel-jqgrid

Laravel jqGrid package allows you to easily integrate the popular jQuery Grid Plugin (jqGrid) into your Laravel application.

7115.5k1](/packages/mgallegos-laravel-jqgrid)[lifeonscreen/nova-sort-relations

This package improves support for sorting relations in Laravel Nova.

2081.9k](/packages/lifeonscreen-nova-sort-relations)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
